【问题标题】:Undo multiple git merges撤消多个 git 合并
【发布时间】:2016-02-04 04:29:51
【问题描述】:

我有两个 git 分支(master 和 fix_log_messages)。我一直在 fix_log_messages 分支中进行各种提交,然后定期将这些更改/提交合并到 master 中。结果,由于 fix_log_messages 分支定期合并到 master 分支,master 分支包含多个合并。

我现在需要从 master 分支中删除属于 fix_log_messages 分支的所有提交。换句话说,我需要撤消多个合并。我知道我可以使用 git revert -m 1 <merge-commit> 恢复单个合并。但是在一个分支上删除多个合并的工作流程是什么?

仅供参考 - 对 master 的更改已被推送到远程。所有合并均使用git merge --no-ff fix_log_messages 执行。

【问题讨论】:

  • 除了合并提交之外,master 上是否还有其他提交,您想保留哪些?或者合并是master 上唯一的额外提交?这两种情况的方法会完全不同......

标签: git version-control git-merge git-commit git-revert


【解决方案1】:

您可以使用git log 查看您要撤消的主分支的提交次数。例如,如果您想回滚 6 个提交,只需键入:

git reset --hard HEAD~6

如果你想恢复你的合并状态,可以使用reflog查看原master分支中最后一次提交的commit id,然后查看。

【讨论】:

  • 不幸的是,这将 a) 删除该范围内 master 上的任何非合并提交,b) 如果强制推送到远程,则会破坏历史记录。
猜你喜欢
  • 1970-01-01
  • 2016-06-02
  • 2019-08-29
  • 2013-06-07
  • 2013-09-12
  • 2020-08-23
  • 1970-01-01
  • 2015-10-26
  • 2011-08-22
相关资源
最近更新 更多