如何在Git的BranchB中复用BranchA的问题修复代码
这种情况我在协作开发中碰到过好多次,给你几个实用的解决方案,你可以根据自己的需求来选:
方案一:只提取修复问题的单个Commit(推荐,最干净)
如果你只需要BranchA里那个问题修复的代码,不想把BranchA上其他未完成的开发功能带进来,这个方法最合适:
- 先切换到你的BranchB分支:
git checkout BranchB - 找到BranchA中修复问题的那个Commit的哈希值:
不用切换分支也能查看,直接执行:
输出里会显示BranchA的所有提交,找到对应修复问题的那一行,前面的一串字符(比如git log --oneline BranchAabc1234)就是commit哈希,记下来前7位就够用了。 - 回到BranchB,执行cherry-pick把这个commit摘过来:
git cherry-pick abc1234 - 如果出现代码冲突,手动修改冲突的文件,修改完后执行:
要是中途不想继续了,也可以用git add <冲突的文件名> git cherry-pick --continuegit cherry-pick --abort取消这次操作。
方案二:合并整个BranchA到BranchB
如果你不仅需要那个修复,还需要BranchA上其他开发的功能,或者之后打算把BranchB和BranchA的内容一起提交,就用这个方法:
- 切换到BranchB分支:
git checkout BranchB - 执行合并命令:
git merge BranchA - 处理可能出现的代码冲突,解决后执行:
这样BranchA的所有修改就都合并到BranchB里了。git add <冲突的文件名> git commit
方案三:将BranchB变基到BranchA上
这个方法适合你希望BranchB的提交历史完全基于BranchA的情况,不过需要你对git rebase有一定了解:
- 切换到BranchB分支:
git checkout BranchB - 执行变基操作:
git rebase BranchA - 如果遇到冲突,手动修改后执行:
直到变基完成。之后等BranchA的PR合并到develop后,你可以再把BranchB变基到最新的develop上,保持提交历史整洁。git add <冲突的文件名> git rebase --continue
额外提醒
等BranchA的PR正式合并到develop之后,记得把BranchB同步到最新的develop分支,避免后续提交PR时出现重复的修复代码:
git checkout BranchB git fetch origin git rebase origin/develop
内容的提问来源于stack exchange,提问作者Rian
相关产品推荐
相关产品推荐

