如何跳过合并中的GIT提交?

时间:2018-07-25 23:34:07

标签: git

我有一个关于在GIT中撤消提交的问题。有一个合并提交(来自合并的提交)破坏了分支,我正在尝试解决此问题。

问题是:

提交1-由开发人员执行。没有错误

提交2-由开发人员执行。没有错误。这里一切都崩溃了。

合并提交3-由另一个远程GIT存储库中的开发人员执行。这不是开发人员对Git存储库的承诺。由于与另一个分支合并,因此是一次提交。您可以在git日志输出中看到差异-提交十六进制和值之后有一个“合并:提交编号”条目。事情破裂了,现在编译失败了。

提交4-由开发人员执行。在合并提交#3之后。由于合并提交3而仍然中断。

我们可以等待执行Merge commit 3的开发人员对其进行修复。不幸的是,他休假了两个星期,他做了一次“承诺并奔跑”。而且我们不想等他回来。

我想做的是修复分支,以便我可以获取提交#1,#2,忽略合并提交#3和获取提交#4。

我尝试了“ git rebase -i HEAD〜4”命令,但是不幸的是,此交互式命令不允许您取消选择“合并”提交。甚至没有列出此命令的合并提交。

还有另一种忽略合并提交的方法吗?

3 个答案:

答案 0 :(得分:2)

选项1,首选

只需修复它。你是一个团队。互相支持。

选项2,撤消提交

git revert SHA_of_the_bad_commit_here
git commit -m "Reverting commit XXX by bad_bad_developer - it broke the build"

这不会更改历史记录,这是一个很好的选择

**选项3,另一个分支**

如果这不是 特殊分支(例如 develop master 或您拥有的任何重要分支),这可能会起作用或者,如果您可以在另一个分支上工作,直到_bad_bad_dev_返回并修复原始分支,则可以。

从commit2创建一个新分支->切换到该新分支并应用commit 4->继续工作

选项4,git重置

这是@ochi的选项-如果分支共享,它将更改历史记录并引起头痛,这似乎是这种情况。

答案 1 :(得分:1)

您可以尝试重置为某个提交(即#2),然后将更改应用到提交#4

git reset --hard <commit-#2-id>
git commit -m "commit #4"
git push

答案 2 :(得分:0)

您应该只返回到Commit 2,找到为COmmit 4创建的分支,然后将该分支合并到该分支所在的任何分支中。