一个具有动画演示的学习git命令的网站:https://learngitbranching.js.org/?locale=zh_CN
基础篇
Git Commit
1 | git commit |
Git Branch
1 | git branch bugFix |
Git Merge
一种分支合并的方法。不会移动之前的工作,创建新的合并提交。
1 | git branch bugFix |
Git Rebase
一种分支合并的方法。Rebase
是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
1 | git branch bugFix |
高级篇
分离HEAD
head
总是指向当前分支上最近一次提交记录。
1 | git checkout C4 |
相对引用
^
表示父提交,~3
表示第3
级父提交。
1 | git checkout C4^ |
1 | git checkout C6 |
-f表示强制移动
撤销变更
- git reset:适用于单人使用的本地分支
- git revert:适用于多人使用的远程分支,可以撤销更改并分享给别人
C2'
引入了更改,是用来撤销C2
这个提交的,C2'
状态与C1
相同。
1 | git reset local~1 |
远程仓库
Git Fetch
将远程仓库更新的数据下载了下来,但并没有修改本地的文件。
1 | git fetch |
Git Pull
pull = fetch + merge
pull --rebase = fetch + rebase
1 | git pull |
制造远程仓库的变更
假设 git fakeTeamwork
是在远程仓库的main分支上做一次提交。
1 | git clone |
Git Push
1 | git commit |
目录偏离
情景大概就是远程仓库修改了,然后本地也做了修改,如何进行统一?直接push
是不行的。
我们用 git fetch
更新了本地仓库中的远程分支,然后用rebase
将我们的工作移动到最新的提交记录下,最后再用 git push
推送到远程仓库。
1 | git clone |
main锁定
在合作团队中工作时,main
可能被锁定,需要一些Pull Request
流程来合并修改。如果提交(commit
)到本地main
, 然后试图推送(push
)修改, 将会收到这样类似的信息:
! [远程服务器拒绝] main -> main (TF402455: 不允许推送(push)这个分支; 你必须使用pull request来更新这个分支.)
新建一个分支feature
, 推送到远程服务器. 然后reset
本地的main
分支和远程服务器保持一致, 否则下次pull
并且他人的提交和本地冲突的时候就会有问题.