Skip to content

Commit 8b33f25

Browse files
committed
Update git-3-branch.txt
1 parent aa3129a commit 8b33f25

File tree

1 file changed

+42
-51
lines changed

1 file changed

+42
-51
lines changed

git-3-branch.txt

+42-51
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,72 @@
1-
21
Study from:http://www.tcreator.info/webSchool/tools/git-3-branch.html
32

4-
�½���֧
3+
新建分支
54
git branch testing
65

7-
�л���֧
6+
切换分支
87
git checkout testing
98
git checkout master
109

1110
git checkout -b iss53
12-
�൱��ִ���������������
11+
相当于执行下面这两条命令:
1312
git branch iss53
1413
git checkout iss53
1514

16-
�½������޲���֧�������ڴ�֮ǰ����������ݴ������߹���Ŀ¼���Щ��û���ύ���޸ģ�������㼴������ķ�֧������ͻ�Ӷ���ֹ Git Ϊ���л���֧���л���֧��ʱ����ñ���һ�����Ĺ��������Ժ����ܼ����ƹ���������İ취���ֱ���� stashing �� commit amending����Ŀǰ�Ѿ��ύ�����е��޸ģ����Խ�������������ת����master ��֧����
15+
新建紧急修补分支(不过在此之前,留心你的暂存区或者工作目录里,那些还没有提交的修改,它会和你即将检出的分支产生冲突从而阻止 Git 为你切换分支。切换分支的时候最好保持一个清洁的工作区域。稍后会介绍几个绕过这种问题的办法(分别叫做 stashing commit amending)。目前已经提交了所有的修改,所以接下来可以正常转换到master 分支:)
1716

1817
git checkout -b 'hotfix'
19-
�޸ĺ�ϲ����ȷ���������marge��
18+
修改后合并(先返回主干再marge)
2019
git checkout master
2120
git merge hotfix
22-
hotfix �����ʷʹ�����Ϳ���ɾ����
21+
hotfix 完成历史使命,就可以删掉了
2322
git branch -d hotfix
24-
���˳��һ����֧����ȥ���Ե�����һ����֧�Ļ�����ô Git �ںϲ�����ʱ��ֻ��򵥵ذ�ָ�����ƣ���Ϊ���ֵ��ߵ���ʷ��֧�������κ���Ҫ����ķ��磬�������ֺϲ����̿��Գ�Ϊ�����Fast forward����
23+
如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,因为这种单线的历史分支不存在任何需要解决的分歧,所以这种合并过程可以称为快进(Fast forward)。
2524

2625

2726
$ git merge iss53
2827
Auto-merging index.html
2928
CONFLICT (content): Merge conflict in index.html
3029
Automatic merge failed; fix conflicts and then commit the result.
31-
�����˳�ͻ������git status(�߼���˵����������ֻ���������þ���)
30+
产生了冲突,可以git status(逻辑上说,这种问题只能由人来裁决。)
3231

33-
�ڽ���������ļ�������г�ͻ������ git add �������DZ��Ϊ�ѽ��״̬����ע��ʵ���Ͼ�����һ�ο��ձ��浽�ݴ����򡣣�����Ϊһ���ݴ棬�ͱ�ʾ��ͻ�Ѿ��������
32+
在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)。因为一旦暂存,就表示冲突已经解决。如
3433

35-
���������һ����ͼ�ν���Ĺ����������Щ���⣬��������git mergetool���������һ�����ӻ��ĺϲ����߲������������г�ͻ��
34+
如果你想用一个有图形界面的工具来解决这些问题,不妨运行git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突:
3635
git mergetool
3736

38-
������һ�� git status ��ȷ�����г�ͻ���ѽ����
39-
������������ˣ�����ȷ�����г�ͻ���ѽ����Ҳ���ǽ������ݴ������Ϳ����� git commit �������κϲ��ύ��
37+
再运行一次 git status 来确认所有冲突都已解决:
38+
如果觉得满意了,并且确认所有冲突都已解决,也就是进入了暂存区,就可以用 git commit 来完成这次合并提交。
4039

4140

4241

4342

4443

4544

4645

47-
��֧�Ĺ���
46+
分支的管理
4847

49-
git branch ��������ܴ�����ɾ����֧����������κβ��������������ǰ���з�֧���嵥��
48+
git branch 命令不仅仅能创建和删除分支,如果不加任何参数,它会给出当前所有分支的清单:
5049
git branch
51-
ע�⿴ master ��֧ǰ�� * �ַ�������ʾ��ǰ���ڵķ�֧��
50+
注意看 master 分支前的 * 字符:它表示当前所在的分支。
5251

53-
��Ҫ�鿴������֧���һ���ύ�������Ϣ������git branch -v��
52+
若要查看各个分支最后一个提交对象的信息,运行git branch -v
5453
git branch -v
5554

56-
Ҫ�Ӹ��嵥��ɸѡ�����Ѿ�������δ���뵱ǰ��֧�ϲ��ķ�֧�������� --merge �� --no-merged ѡ�Git 1.5.6 ���ϰ汾����������git branch --merge �鿴��Щ��֧�ѱ����뵱ǰ��֧����ע��Ҳ����˵��Щ��֧�ǵ�ǰ��֧��ֱ�����Ρ�����
55+
要从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用 --merge --no-merged 选项(Git 1.5.6 以上版本)。比如用git branch --merge 查看哪些分支已被并入当前分支(译注:也就是说哪些分支是当前分支的直接上游。):
5756

5857
git branch --merged
59-
һ����˵���б���û�� * �ķ�֧ͨ���������� git branch -d ��ɾ����ԭ��ܼ򵥣���Ȼ�Ѿ��������������Ĺ������ϵ���������֧��ɾ��Ҳ������ʧʲô��
58+
一般来说,列表中没有 * 的分支通常都可以用 git branch -d 来删掉。原因很简单,既然已经把它们所包含的工作整合到了其他分支,删掉也不会损失什么。
6059

61-
��������� git branch --no-merged �鿴��δ�ϲ��Ĺ�����
60+
另外可以用 git branch --no-merged 查看尚未合并的工作:
6261

63-
���ͱ��ط�֧
64-
�� serverfix �ķ�֧��Ҫ������һ�𿪷����������� git push (Զ�ֿ̲���) (��֧��)���ͣ�
62+
推送本地分支
63+
serverfix 的分支需要和他人一起开发,可以运行 git push (远程仓库名) (分支名)推送:
6564
git push origin serverfix
66-
Ҳ��������git push origin serverfix:serferfix
65+
也可以运行git push origin serverfix:serferfix
6766

68-
�����Զ�̷�֧����awesomebranch�������� git push origin serverfix:awesomebranch ���������ݡ�
67+
若想把远程分支叫作awesomebranch,可以用 git push origin serverfix:awesomebranch 来推送数据。
6968

70-
�������Ҫһ���Լ��� serverfix ��������������Զ�̷�֧�Ļ����Ϸֻ���һ���µķ�֧����
69+
如果再想要一份自己的 serverfix 来开发,可以在远程分支的基础上分化出一个新的分支来:
7170
git checkout -b serverfix origin/serverfix
7271

7372

@@ -76,43 +75,43 @@ git checkout -b serverfix origin/serverfix
7675

7776

7877

79-
����Զ�̷�֧
78+
跟踪远程分支
8079

81-
��Զ�̷�֧ checkout �����ı��ط�֧����Ϊ_���ٷ�֧(tracking branch)_��
80+
从远程分支 checkout 出来的本地分支,称为_跟踪分支(tracking branch)_
8281

8382

8483

85-
����������������趨Ϊ�������ٷ�֧��git checkout -b [��֧��] [Զ����]/[��֧��]
84+
你可以随心所欲地设定为其它跟踪分支,git checkout -b [分支名] [远程名]/[分支名]
8685
git checkout --track origin/serverfix
8786

88-
git checkout -b sf origin/serverfix ����Ϊsf
87+
git checkout -b sf origin/serverfix 更名为sf
8988

9089

9190

9291

93-
ɾ��Զ�̷�֧
92+
删除远程分支
9493
git push origin :serverfix
95-
�ˣ��������ϵķ�֧û�ˡ�������ر�������һҳ����Ϊ��һ�����õ��Ǹ����������ܿ��ܻ����������﷨�����ַ��������������ķ�������ס���Dz���ǰ������ git push [Զ����] [���ط�֧]:[Զ�̷�֧] �﷨�����ʡ�� [���ط�֧]���Ǿ͵�������˵����������ȡ�հ�Ȼ��������[Զ�̷�֧]����
94+
咚!服务器上的分支没了。你最好特别留心这一页,因为你一定会用到那个命令,而且你很可能会忘掉它的语法。有种方便记忆这条命令的方法:记住我们不久前见过的 git push [远程名] [本地分支]:[远程分支] 语法,如果省略 [本地分支],那就等于是在说“在这里提取空白然后把它变成[远程分支]”。
9695

97-
������master��֧ʱɾ��develop��֧
96+
比如在master分支时删除develop分支
9897
git push origin :develop
9998

10099

101100

102-
��֧���ܺ�
103-
rebase ����Ϳ��԰���һ����֧���ύ�ĸı��Ƶ���һ����֧���ط�һ�顣
101+
分支的衍合
102+
rebase 命令,就可以把在一个分支里提交的改变移到另一个分支里重放一遍。
104103

105104
git checkout experiment
106105
git rebase master
107-
�ѵ�ǰ��֧�ܺϣ��ܺ��ܲ���һ����Ϊ������ύ��ʷ������Ӳ�һ���ܺϹ��ķ�֧����ʷ��¼����������� ������·������޸Ķ�����һ�������Ⱥ���еģ�����ʵ��������ԭ����ͬʱ���з����ġ�
108-
����ע��ʵ�����ǰѽ����֧����ͬ�������ɴ���֮���ͻ�����Σ���תΪ���ύ�����������������
106+
把当前分支衍合,衍合能产生一个更为整洁的提交历史。如果视察一个衍合过的分支的历史记录,看起来会更 清楚:仿佛所有修改都是在一根线上先后进行的,尽管实际上它们原本是同时并行发生的。
107+
(译注:实际上是把解决分支补丁同最新主干代码之间冲突的责任,化转为由提交补丁的人来解决。)
109108

110-
�ѻ��� server ��֧���� master ��֧�ĸı䣬���� server ֱ�ӷŵ�master ��֧������һ��
109+
把基于 server 分支而非 master 分支的改变,跳过 server 直接放到master 分支中重演一遍
111110
git rebase --onto master server client
112111

113-
����ȡ�� client ��֧���ҳ� client ��֧�� server ��֧�Ĺ�ͬ����֮��ı仯��Ȼ���������master ������һ��
112+
即:取出 client 分支,找出 client 分支和 server 分支的共同祖先之后的变化,然后把它们在master 上重演一遍
114113

115-
֮��Ϳ��Կ��master��֧��
114+
之后就可以快进master分支了
116115
git checkout master
117116
git merge client
118117

@@ -121,16 +120,8 @@ git rebase master server
121120

122121

123122

124-
�ܺϵķ���
125-
126-
������ܺ�Ҳ����������ȱ��Ҫ����������һ��׼��
127-
һ����֧�е��ύ���󷢲��������ֿ⣬��ǧ��Ҫ�Ը÷�֧�����ܺϲ�����
128-
�������ѭ����������ɣ��Ͳ�����������������Ⱥ�ڻ����㣬������Ѻͼ���Ҳ�ᳰЦ�㣬�����㡣
129-
130-
131-
132-
133-
134-
135-
123+
衍合的风险
136124

125+
奇妙的衍合也并非完美无缺,要用它得遵守一条准则:
126+
一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
127+
如果你遵循这条金科玉律,就不会出差错。否则,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。

0 commit comments

Comments
 (0)