# Git学习笔记 **Repository Path**: TaoqiX/git-notes ## Basic Information - **Project Name**: Git学习笔记 - **Description**: 2022年初寒假在家,本仓库用来存储我的 Git 学习笔记 。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-14 - **Last Updated**: 2022-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Git学习笔记 ### 介绍 本仓库用来存储我的 Git 学习笔记 。 ### 可参考的资源 [oschina链接](https://my.oschina.net/jiangxinJava/blog/4255618) [Git后悔药](https://my.oschina.net/jiangxinJava/blog/4519114) [CSDN链接1](https://blog.csdn.net/u013719339/article/details/80779097) [黑马的PDF讲义](https://gitee.com/TaoqiX/git-notes/blob/master/PDF%E6%96%87%E6%A1%A3/Git%E8%AE%B2%E4%B9%89.pdf) ### 常用命令 #### 查看与显示 - **查看关联了那些远程仓库** > $ git remote –v - **显示远程仓库origin信息** > $ git remote show origin - **显示所有本地和远程分支(显详细可加参数-v,-vv)** > $ git branch -a #### 分支相关 - **把远程origin的dev分支创建到本地** 不改名,直接用: > $ git checkout dev 换个新名字来用: ``` 细节的温柔@LAPTOP-S1A26EQE MINGW64 /d/BBBBB/git-practice (master) $ git checkout -b dev-111 origin/dev Switched to a new branch 'dev-111' Branch 'dev-111' set up to track remote branch 'dev' from 'origin'. ``` - **新建没有提交历史的分支** > git checkout --orphan xxx > git rm -rf . #删除本目录下所有文件 - **设置(track追踪)dev111的上游分支为dev** > $ git branch -u origin/dev dev-111 - **分支合并** > $ git merge (--no-ff -m "提交信息") [已存在的分支名称或者提交记录ID] 。 #### pull相关 - **允许历史不相关的分支,可添加参数--allow-unrelated-histories** > $ git pull origin master --allow-unrelated-histories - **直接git pull** 如果不指定远端名称和分支名,则 _抓取所有并更新当前分支_ 。 #### push相关 - **命令** > $ git push origin HEAD:dev # 把本地HEAD推送到远程仓库(origin)的dev分支 。 //////////////////////// > 衍生: git push origin dev等价于git push origin dev:dev(若远程分支dev不存在,将自动创建) git push origin :dev **删除**远程分支(如果远程分支dev为默认分支,可能无法删除) - **push时带上,-f强制推送(会将本地修改覆盖远程修改而不是合并,需谨慎),-u追踪上游分支** > $ git push -u origin dev:master -f - **push失败的原因分析** 1. **非快进(non-fast-forward):** 也就是说,那个远程分支产生了修改,可能你的队友提交过,但你本地分支并没有远程分支的那个修改,所以就不是快进模式。 **解决方法:** _法一_ :不要远程分支的那个修改,也就是强制推送(加上-f),使用命令`git push origin HEAD -f`使用后远程修改将被删除///// _法二_ :保留远程分支的那个修改,也就是将远程的修改和本地的修改进行合并,然后再push推送。步骤,先`git pull`下载更新且合并,再`git push`,当产生冲突时,需要解决冲突///// _法三_ :推送到别的或者新的远程分支,先`git branch xyz`再`git push -u origin xyz`就行了。 ### 设置SSH 使用 `ssh-keygen -t rsa`命令后,一路回车,会在`/c/Users/xxx`中生成`.ssh`文件夹,记事本打开`id_rsa.pub`并把里面的所有内容复制,在Gitee账号的设置里找到SSH公钥选项,进行添加公钥。接着执行`ssh -T git@gitee.com`命令,然后需要回复`yes`,执行完后出现successfully这个单词就表示成功了。 ### 图片 ![多人开发](https://images.gitee.com/uploads/images/2022/0214/173418_811a9fd0_9702798.png "多人开发.png") -----