1.clone
- 选择http地址
- 选择branch
2.checkout
- 在commit之间移动(保留未提交修改)
- 回滚本地未commit修改
3.commit
- 正常commit
- [!] amend修改注释内容,重新提交(修改了commit id)
- rebase(squash)
- [!] HEAD^n,HEAD~n(慎用)
- [!] detached HEAD(游离commit)
4.push
- 正常push
- push失败情况[分支锁定|需要pull]
- [!]force(–force-with-lease)
- [!]master禁止force
5.pull(fetch+merge)
- 正常pull
- pull自动合并
- [!] pull冲突解决
- [!] rebase pull(不建议使用)
- 只fetch(更新版本库)
6. [!] reset
- [!] mixed(撤销add,保留文件,回到提交前状态,默认行为)
- [!] soft(保留文件,回到stage+未commit状态)
- [!] hard(回到提交前状态并清空本地代码!)
- [!] 最后执行push force(–force-with-lease)
- [!] 特殊:处理强推(mixed)
7.revert
- 回滚并保留提交历史
8.merge
- [!] 注意分支顺序
9.cherrypick
- [!] 摘选单commit做合并
10.branch
- 用于多分支开发
11.tag
- 用于归档,只读
12.patch&diff
- [!] 多commit做合并,很少用
[!] 表示危险操作
[附HEAD^图解]
G H I J
\ / \ /
D E F
\ | / \
\ | / |
\|/ |
B C
\ /
\ /
A <-HEAD
其中G-D-B-A为主干分支
A = = A^0
B = A^ = A^1 = A~1
C = A^2 = A^2
D = A^^ = A^1^1 = A~2
E = B^2 = A^^2
F = B^3 = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2 = B^^2 = A^^^2 = A~2^2
I = F^ = B^3^ = A^^3^