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_1develop

所以我;

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

那么,当你在分支developcherry-pick it

git cherry-pick <commit SHA obtained above>

在另一个分支version_1上执行类似的操作。

【讨论】:

以上是关于Git:将提交合并到不同的分支的主要内容,如果未能解决你的问题,请参考以下文章

Git不同项目代码分支合并,且仅合并特定提交

git分支合并的,拉取远程分支,合并到本地等不同情况下git的操作命令

合并后的 Git 分支和提交历史记录

撤消 Git 分支提交和合并

git 怎么提交合并分支的部分代码

如何将本地未提交的更改合并到另一个 Git 分支?