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

举报
gentle_zhou 发表于 2021/12/28 14:18:00 2021/12/28
【摘要】 3种方式把别的分支的改动内容同步更新到自己的分支来。

工作中经常会碰到一些情形,就是部门里大家基于某个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号码)。
image.png

然后我在本地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的第一个。然后他就会返回我们一个集合,显示有哪些不一样的地方并应用于当前本地分支。
image.png

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。