Git:将提交合并到不同的分支
Posted
技术标签:
【中文标题】Git:将提交合并到不同的分支【英文标题】:Git: Merge a Commit into a different Branch 【发布时间】:2014-07-17 13:15:29 【问题描述】:所以我有3个分支;
develop
- 我的持续开发分支
version_1
- 发布分支
version_2
- 发布分支
我必须在 version_2
上做一个修补程序才能重新发布该版本,这是 2 个文件中的 2 行更改,非常小。
我想将该修复应用到 version_1
和 develop
。
所以我;
git checkout version_1
git merge <commit checksum>
我认为提交只包含更改,因此只会应用这些更改。但是合并会发生冲突,因为它会尝试更新两个分支之间的所有更改。
有没有办法仅将小提交中的更改合并/移动/应用到其他分支?
我可以在这些分支上手动重新实施修补程序,但这似乎很辛苦,尤其是在可能需要重新应用更多修补程序并将其推广到所有其他分支时。
Cheers, Will
【问题讨论】:
【参考方案1】:只合并一个或几个提交意味着使用git cherry-pick
首先取消您刚刚执行的合并:参见“Undo a Git merge?”。 那么:
git checkout version_1
git cherry-pick <commit checksum>
这可以应用于多个提交或一系列提交:请参阅“How to cherry pick a range of commits and merge into another branch”。
【讨论】:
自我说明:这是我在 Stack Overflow 上的 第 10000 个答案(68 个月内),距离9000th answer 不到 6 个月。在此之前8000th answer、7000th answer、6000th answer、5000th answer、4000th answer、3000th answer、2000th answer。【参考方案2】:你需要cherry-pick
那些提交。
切换到要添加提交的分支:
git checkout develop
然后,cherry-pick
提交。首先做一个git reflog
并获取该修补程序提交的SHA-1
。
那么,当你在分支develop
,cherry-pick
it
git cherry-pick <commit SHA obtained above>
在另一个分支version_1
上执行类似的操作。
【讨论】:
以上是关于Git:将提交合并到不同的分支的主要内容,如果未能解决你的问题,请参考以下文章