一个具有动画演示的学习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并且他人的提交和本地冲突的时候就会有问题.

