还原 git 合并,同时允许稍后进行相同的合并)

  • 本文关键字:合并 git 还原 许稍 git merge
  • 更新时间 :
  • 英文 :


恢复已提交的 git 合并同时保留稍后合并同一分支的选项的最佳方法是什么?

这是针对一种情况,当我将分支合并到 HEAD 中,然后决定我目前不希望这些更改,但仍希望在以后的某个时间点将它们合并到 HEAD 中。

">git revert -m 1"将代码恢复到合并前的状态,但分支仍然以某种方式标记为"已合并"。因此,稍后与同一分支重复合并是行不通的。

这应该是一个非常普遍的问题(git 是一个进化的工具(,但我找不到一个简单的干净解决方案(除了破坏 git 存储库并再次从远程拉取它(。我错过了什么吗?

很抱歉,您浪费了分支。

但是有一个解决方法。诀窍是暂时"重写"合并提交,以便它忘记分支是父分支。假设X是合并提交:

git replace --graft X X^   # pretend that there is just one parent
git merge branch           # merge the branch again
git replace --delete X     # remove the replacement

如果你的合并提交还没有被推送,它是顶部的,你可以使用 reset 命令

git reset --hard HEAD^

请注意,所有未提交的更改都将丢失。

如果您尚未发布合并提交(推送到中央服务器(,最好的解决方案是重写历史记录以删除合并提交。

  1. 如果在合并提交后没有其他提交,请将 head 重置为上一次提交:

git 重置头^

    如果在合并提交
  1. 后还有其他提交,则需要执行变基并删除合并提交,同时重新应用其他提交。

git 变基 -i

如果您已经发布了合并,则需要决定是重写历史记录以保留分支的适当合并潜力,还是简单地添加还原提交。这将需要与可能下载合并的每个人交谈。

如果无法重写历史记录,则需要还原:

git 还原 -m 1

在这种情况下,分支的未来合并将需要手动干预。您可能需要挑选未被合并选取的提交,或还原还原提交。

最新更新