Git学习
0. 简介
本篇笔记主要是对在learn git网站上学习的记录。
平时也详细学习过Git的各种命令,但是对各种操作的理解并不是特别深刻,这个网站以动画方式进行教学,感觉效果很好,因此做一篇学习笔记,供以后参考。
第一部分:主要命令
1. 基础篇
1.1 git commit
1.2 git branch
1.3 git merge
因为 master
继承自 bugFix
,Git 什么都不用做,只是简单地把 bugFix
移动到 master
所指向的那个提交记录。
1.4 git rebase
由于 bugFix
继承自 master
,所以 Git 只是简单的把 master
分支的引用向前移动了一下而已。
2. 高级篇
2.1 分离HEAD
2.2 相对引用(^)
2.3 相对引用(~)
2.4 强制修改分支位置
如果不指定将要移动到的位置,默认为移至当前分支。
2.5 撤销变更
虽然在你的本地分支中使用 git reset
很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!
为了撤销更改并分享给别人,我们需要使用 git revert
。
奇怪!在我们要撤销的提交记录后面居然多了一个新提交!这是因为新提交记录 C2'
引入了更改 —— 这些更改刚好是用来撤销 C2
这个提交的。也就是说 C2'
的状态与 C1
是相同的。
revert 之后就可以把你的更改推送到远程仓库与别人分享啦。
3. 移动提交记录
3.1 git cherry-pick
3.2 互交式rebase
4. 杂项
4.1 只提取一个记录
git rebase -i HEAD~3
git branch -f master
4.2 提交的技巧#1
git rebase -i HEAD~2
git commit --amend
git rebase -i HEAD~2
git branch -f master
4.3 提交的技巧#2
git checkout master
git cherry-pick C2
git commit --amend
git cherry-pick C3
4.4 git tag
4.5 git describe
5. 高级话题
5.1 多次rebase
目标:
git rebase master bugFix
git rabase bugFix side
git rebase side another
git rebase another master
5.2 两个父节点
目标:
git branch bugWork HEAD~^2~1
5.3 纠缠不清的分支
目标:
git checkout one
git cherry-pick C4 C3 C2
git checkout two
git cherry-pick C5 C4 C3 C2
git branch -f three C2
第二部分:远程操作
6. Push & Pull
6.1 git clone
6.2 远程分支
git commit
git checkout o/master
git commit
6.3 git fetch
6.4 git pull
git pull的结果与此完全相同。
6.5 模拟团队合作
远程仓库:
克隆代码:git clone
团队成员提交代码:git fakeTeamwork master 2(模拟)
本地修改代码并提交:git commit
更新本地代码:git pull
6.6 git push
注意origin/master分支的变化。
6.7 偏离的提交历史
6.8 日常工作流程
克隆远程代码:git clone
团队成员提交代码:git fakeTeamwork master 1
本地修改代码并提交:git commit
更新本地代码:git pull --rebase
提交代码:git push
7. 关于 origin 和它的周边
7.1 推送主分支
目标:
git fetch
git rebase o/master side1
git rebase side1 side2
git rebase side2 side3
git rebase side3 master
git push