常见操作
全局配置用户信息
1 | git config --global user.name "smyhvae" |
分支的合并
场景:基于master分支的代码,开发一个新的特性
如果你直接在master分支上开发这个新特性,是不好的,万一你在开发特性1的时候,领导突然又要叫你去开发特性2,就不好处理了。难道开发的两个特性都提交到master?一会儿提交特性1的commit,一会儿提交特性2的commit?这会导致commit记录很混乱。
所以,我给你的建议做法是:给每个特性都单独建一个的新的分支。
比如说,我专门给特性1建一个分支feature_item_recommend。具体做法如下:
(1)基于master分支,创建一个新的分支,起名为feature_item_recommend:
1 | $ git checkout -b feature_item_recommend |
上面这行命令,相当于:
1 | $ git branch feature_item_recommend // 创建新的分支 |
(2)在新的分支feature_item_recommend上,完成开发工作,并 commit 、push。
(3)将分支feature_item_recommend上的开发进度合并到master分支:
1 | $ git checkout master //切换到master分支 |
合并之后,master分支和feature_item_recommend分支会指向同一个位置。
(3)删除分支feature_item_recommend:
既然 特性1 开发完了,也放心地提交到master了,那我们就可以将这个分支删除了。
1 | git branch -d feature_item_recommend |
注意,我们当前是处于master分支的位置,来删除feature_item_recommend分支。如果当前是处于feature_item_recommend分支,是没办法删除它自己的。
同理,当我转身去开发特性2的时候,也是采用同样的步骤。
合并分支时,如果存在分叉

比如说上面这张图中,最早的时候,master分支是位于C2节点。我基于C2节点,new出一个新的分支iss53,我在iss53上提交了好几个commit。
现在,我准备把iss53上的几个commit合并到master上,此时发现,master分支已经前进到C4了。那该怎么合并呢?
合并的命令仍然是:
1 | $ git checkout master |
解释:
这次合并的实现,并不同于简单的并入方式。这一次,我的开发历史是从更早的地方开始分叉的。
由于当前 master 分支所指向的commit (C4)并非想要并入分支(iss53)的直接祖先,Git 不得不进行一些处理。就此例而言,Git 会用两个分支的末端(C4 和C5)和它们的共同祖先(C2)进行一次简单的三方合并计算。
Git 没有简单地把分支指针右移,而是对三方合并的结果作一新的快照,并