GIT 使用经验(3) ---分支间的操作 (续)


Git处理分枝和合并是非常独到的。无论是创建新分枝还是分枝之间切换,都表现出一个共同的特征--快!Git 鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系.下面就详解一下Git的合并与撤销

 


 

Git合并

 

比如现在项目提交了几次更新,在C2通过主分支创建了2个不同的分支做不同的任务




 
等任务做完需要merge到master时就可以切换到master分支下分别merge iss01和iss02分支。首先merger iss01时,会看到Fast Forward的提示,因为C3是C2的直接上游,所以Git只需把 master 分支指针直接右移。此次合并不会产生任何的冲突。如下图。


 
然后在用master合并iss02,会看到Merge made by recursive.,Git会合并C3,C4并对合并后的结果重新做一个新的快照,并自动创建一个指向它的提交对象C5如下图




 
有时候合并操作并不会如此顺利。在进行如上操作的过程中,如果iss01和iss02修改到了同一个文件的相同代码时,就会出现冲突,遇到此问题时我们可以用小乌龟自带的冲突工具解决。如下图




 

如果在分支iss01提交的时候它的直接祖先C2也进行了修改,如下图。这时候在用C6合并C4也是可以的,Git会自己裁决哪个共同祖先才是最佳合并基础,所以此特性让Git的合并操作比其他系统都要简单不少。


 

 

Git撤销

 

如果文件已经修改,但是还没有commit,我们可以用小乌龟的revert命令进行撤销。
如果文件已经commit,可以使用git reset --hard HEAD~1撤销上一次提交。~<index>代表撤销前几次的提交.
此命令回退一次commit,在回退到的commit之后的所有修改都被丢弃,所以要慎重使用。
也可以使用git reset --soft HEAD~1撤销上一次提交,它和hard的区别是,同样取消一次commit,但是所有的修改都保留。此方法用来修改commit的message非常方便。
git-revert HEAD~1      一般是按照某一次的commit完全反向的进行一次commit,他的效果和git-reset --hard HEAD~1 && git-commit -a -m 'revert commit <commitid> xxx....' 完全一样。

 

reset命令只是相当于在本地进行一次还原操作,如果想让别的分支知道你的撤销动作,请使用revert命令,它是完全反向的进行一次commit。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值