1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| # 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
$ git checkout -b dev origin/dev # 新建分支dev并切换到该分支, 链接到远程dev分支
# 让分支指向另一个提交
git branch main HEAD~3 # 让main分支指向head的前第3个提交
# 或者
git branch -f main HEAD~3 # -f表示强制
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 或者
$ git branch -u origin/master local-branch # 简写
# 这样 local-branch 就会跟踪 origin/master 了。如果当前就在 local-branch 分支上, 还可以省略 local-branch
$ git branch -u origin/master
# 合并指定分支到当前分支
$ git merge [branch] # (不推荐)
$ git merge --no-ff 要合并的分支 (推荐, 不使用快速合并, 提交历史更加清晰, 不容易出错)
# git 分支合并到主分支时,去掉分支的冗余提交。即,将分支的多次提交一次性合并到主分支上。
$ git checkout master # 切换到主分支
$ git merge --squash dev # 一次性合并分支的多次提交
$ git commit -m 'xxx版' # 将刚‘合并的提交’提交到主分支master
# 选择一个commit,拷贝分支合并进当前分支, 比如把dev的c2和c4拷贝为c2', c4', 加到到main分支后面
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
# 查看本地分支和哪个远程分支对应
git branch -vv
|