GIT学习P1:操作分支

刚刚学习了一些GIT分支相关教程,感觉有助于理解GIT的工作原理,仅以记录,也希望对有需要的人有所帮助。

注:这不是教程,所以没有对各个命令做详细的解释,以下操作都是本地分支操作。

1.事前准备

a.创建新目录,并建立一个空数据库,名为zoo;

b.创建一个monkey的文件夹,下面放一个red-monkey.txt的文件并写一句“这是红毛大猩猩”,然后提交;

2.建立分支

c.通过branch命令来创建名为issue1的分支

不指定参数直接执行branch命令的话,可以显示分支列表。 前面有*的就是现在的分支。

3.切换分支

d.若要在新建的issue1分支进行提交,需要切换到issue1分支。

git checkout #创建分支

git checkout -b #在checkout命令指定 -b选项执行,可以创建分支并进行切换。

在切换到issue1分支的状态下创建文件夹tiger文件夹和white-tiger.txt,并写入“这是一只白虎”,然后提交。

4. 合并分支

e.执行merge命令,向master分支合并issue1分支的修改。

git merge #将指定分支导入到HEAD指定的分支。

该命令将指定分支导入到HEAD指定的分支,所以要先切换master分支,然后把issue1分支导入到master分支。

merge完成后可以看到issue1上的tiger合并到master上了(添加和修改的文件都会合并)。

注:从创建issue1分支到合并到master分支这段时间master没有提交记录,所以这个是fast-forward(快进)合并。

5.删除分支

f.既然issue1分支的内容已经顺利地合并到master分支了,现在可以将其删除了,在branch命令指定-d选项执行,以删除分支。

git branch -d #删除后使用git branch确认

6.并行操作

g.接下来创建issue2分支和issue3分支,并切换到issue2分支。

h.在issue2分支的red-mnkey.txt添加“红毛大猩猩想吃饭”,然后提交。

i.接着,切换到issue3分支,在red-mnkey.txt添加“红毛大猩猩想睡觉”,然后提交

7.解决合并的冲突

j.切换master分支后,与issue2分支合并,执行fast-forward(快进)合并(内容多了“红毛大猩猩想吃饭”)。git历史记录如下图

k.接着合并issue3分支,自动合并失败。由于在同一行进行了修改,所以产生了冲突,在发生冲突的地方,Git生成了内容的差异(>>>>>>>>之间是冲突的代码,=========分割了两个分支的代码),我们这里需要保留两个分支的内容,修改好以后重新提交。

历史记录如下图所示。因为在这次合并中修改了冲突部分,所以会重新创建合并修改的提交记录。这样,master的HEAD就移动到这里了。这种合并不是fast-forward合并,而是non fast-forward合并。

8.测试rebase合并

合并issue3分支的时候,使用rebase可以使提交的历史记录显得更简洁。

l.现在暂时取消刚才的合并,回退到了第j步的状态

git reset --hard HEAD~

m.切换到issue3分支后,对master执行rebase,然后对冲突部分修改。

n.rebase的时候,修改冲突后的提交不是使用commit命令,而是执行rebase命令指定 --continue选项。若要取消rebase,指定 --abort选项。此时历史记录如下图

git add red-monkey.txt

git rebase --continue

o.这样,在master分支的issue3分支就可以fast-forward合并了。切换到master分支后执行合并。最终历史记录如下图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值