【问题标题】:How to revert a range of commits when it contains some merge commits?当包含一些合并提交时如何恢复一系列提交?
【发布时间】:2020-09-17 16:17:33
【问题描述】:

我正在尝试还原一些提交是合并提交的一系列提交。我需要在这些“坏”提交范围之前精确复制分支(例如,最后一个好的提交是“A”)

git revert B1^..B10

如果有些是合并提交,它将返回类似“...由于合并而不允许但没有给出 -m 选项”的错误。

如果我提供选项 -m 1,它将恢复,但如果我签出提交 ID“A”,我将无法获得完全相同的正确代码版本。

注意,我确实想保留历史记录,所以不能使用reset 命令。

【问题讨论】:

标签: git


【解决方案1】:

我需要在这些“坏”提交范围之前精确复制分支(例如,最后一个好的提交是“A”)

git read-tree -um A
git commit

【讨论】:

  • 这看起来像个赢家。感谢read-tree 的提示。
【解决方案2】:

如果你想完全撤消 git 历史中的最后一次提交,以及更改文件的更改,如果你还没有推送:

git 重置 HEAD~1

如果你已经推送了

git 重置头

【讨论】:

  • 我确实考虑过,但我想保留历史。
  • 我认为你应该可以使用 git reset --soft HEAD~1 来保留历史记录
猜你喜欢
  • 2020-04-13
  • 2011-06-26
  • 2021-03-26
  • 2015-08-29
  • 2021-10-06
  • 1970-01-01
  • 2021-12-07
  • 2012-10-26
  • 2011-04-18
相关资源
最近更新 更多