我有一个关于在GIT中撤消提交的问题。有一个合并提交(来自合并的提交)破坏了分支,我正在尝试解决此问题。
问题是:
提交1-由开发人员执行。没有错误
提交2-由开发人员执行。没有错误。这里一切都崩溃了。
合并提交3-由另一个远程GIT存储库中的开发人员执行。这不是开发人员对Git存储库的承诺。由于与另一个分支合并,因此是一次提交。您可以在git日志输出中看到差异-提交十六进制和值之后有一个“合并:提交编号”条目。事情破裂了,现在编译失败了。
提交4-由开发人员执行。在合并提交#3之后。由于合并提交3而仍然中断。
我们可以等待执行Merge commit 3的开发人员对其进行修复。不幸的是,他休假了两个星期,他做了一次“承诺并奔跑”。而且我们不想等他回来。
我想做的是修复分支,以便我可以获取提交#1,#2,忽略合并提交#3和获取提交#4。
我尝试了“ git rebase -i HEAD〜4”命令,但是不幸的是,此交互式命令不允许您取消选择“合并”提交。甚至没有列出此命令的合并提交。
还有另一种忽略合并提交的方法吗?
答案 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创建的分支,然后将该分支合并到该分支所在的任何分支中。