【git系列】如何把别的分支的改动内容同步更新到自己的分支来?

工作中经常会碰到一些情形,就是部门里大家基于某个branch比如说叫develop 因为不同的开发需求创建自己的branch比如叫A,B,C。在某一时刻,branch A有了修改更新了,这时候我们别的分支想要同步这些更新该怎么做呢?

方法一. 合并分支

最简单方便。我们在需要同步的分支比如分支B这,用$git merge A 命令把分支A合并入分支B。
但有时候我们并不需要分支A上所有的修改,我们只需要一部分修改更新同步过来即可,这时候该怎么做呢?

方法二. 复制黏贴

最暴力费神。我们直接把分支A中需要更新的修改内容复制黏贴到分支B中。但文件一多就很容易遗漏一些部分。

方法三. “摘樱桃”同步部分提交

最准确合适。我们只需要同步部分代码变动(某几个提交)到另外一个分支即可。这时候我们用$git cherry-pick [commitID]命令,cherry-pick命令直译过来就是摘樱桃,该命令会返回一个变量集表示该分支工作树与其父级工作树之间的差异,并将其应用于当前分支。最后我们再用命令$git push 上传到远端即可。
以我这次同步更新为例:
首先我在codehub页面找到需要同步更新的commit ID,一般在代码页面的历史记录里都可以找到。复制黏贴圆圈里的数字(这几个数字是commitID的前面几个数字,可以只复制这几个,一般来说是不会有重复的;保险起见,就点击ID旁边的复制按钮复制所有ID号码)。

然后我在本地branch里,用命令$git cherry-pick 6cc440c4,但这时候会有个坑,因为如果一个提交有两个或更多父母,它也代表两个或更多的差异。我们得告诉git我们要用哪个父母,否则的话会显示错误“error: commit 6cc440c4XXXXXXX is a merge but no -m option was given. fatal: cherry-pick failed”。
我这里用的$git cherry-pick -m 1 6cc440c4命令告诉cherry-pick命令计算diff的第一个。然后他就会返回我们一个集合,显示有哪些不一样的地方并应用于当前本地分支。

接着我们要做的就是输入$git add *$git push命令同步到我们分支的远端。

 转载自华为云社区,文章作者 gentle_zhou

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值