您如何合并已恢复的提交?

Posted

技术标签:

【中文标题】您如何合并已恢复的提交?【英文标题】:How do you merge a commit that has been reverted? 【发布时间】:2012-10-26 14:28:00 【问题描述】:

我最近遇到了一种情况,我将功能分支中的更改合并到我的主分支和生产分支中。然后我需要从我的生产分支中删除更改,所以我使用了 git revert。我现在需要将这些更改合并回生产分支,但如果我执行 git merge sha1 我会收到以下消息:

Already up-to-date

谁能帮我解决这个问题?

更新 所以我最终从我的生产分支创建了一个分支,应用了我在该分支中恢复的文件的差异,然后将该更改合并到生产中。我不喜欢它,但它奏效了。如果有办法使用相同的 sha1,我仍然很想知道。

【问题讨论】:

你试过git cherry-pick吗? 刚试了下,cherry-pick也没用。 cherry-pick 似乎对我有用。 git format-patch $SHA1 -> writes 0001-description.patch 是一个稍微手动的等价物。然后是git am 0001-description.patch,或者git apply ...,然后提交,甚至patch -p1 ...(在repo的顶层)。 【参考方案1】:

我现在需要将这些更改合并回生产分支

git revert,如果在 production 分支上完成,将创建一个新的提交,取消您要删除的提交。

由于新的提交已经在那个分支上('production'),你不能合并它。

如果您的意思是“合并回 feature 分支”,那么合并时您将在 feature 分支上应用该新提交,同时从 feature 分支中删除更改。

【讨论】:

你好 VonC,我实际上需要将我的主分支中的提交合并到我的生产分支中,但是因为我已经将功能分支合并到了生产和主分支中。我认为问题在于提交在主服务器和生产环境中,但生产环境具有更新的“还原提交”,因此我的更改没有应用。有什么想法吗? @akiladila“我的改变”?哪些变化?它们都在masterprod 中,因此将master 合并到prod(即使prod 没有一个额外的revert 提交)将始终产生Already up-to-date 消息。不过,将 prod 合并到 master 应该可以正常工作。

以上是关于您如何合并已恢复的提交?的主要内容,如果未能解决你的问题,请参考以下文章

从已推送的合并分支中恢复特定提交

在没有变基的情况下恢复合并

如何在合并提交中列出已解决冲突的统计信息?

如何恢复从一个分支合并的所有提交

你如何恢复错误的 git 合并提交

如何恢复到几个较旧的提交,包括合并,但在恢复提交的头部有一个提交? [关闭]