在Git中修复损坏分支的最佳实践?

时间:2014-10-06 15:15:02

标签: git

假设“master”分支必须始终稳定,那么修复“master”的最佳做法是什么,如果偶然将一个功能合并到“master”中,它会破坏它并且master已被推送到远程?

我曾经重置过以前的稳定提交,然后在该提交上对“master”执行push --force,但我认为它有点讨厌,因为它涉及重写历史。

在这里,我们找到了一个或多个恢复提交的建议: How to do emergency fixes on master in git?

如果由于某种原因你合并了一个包含5次以上提交的功能,这也有点单调乏味(据我所知,你一次只能恢复一次提交)。

修复破碎的树枝的任何建议我都没想过?

2 个答案:

答案 0 :(得分:1)

如果中断是错误合并的结果,那么您只需使用

还原合并提交本身
git revert -m 1 $merge_sha

这假设^ 1是主人。

这将恢复合并提交引入的所有更改,无论是来自1次提交还是500次提交。

将来,为了“恢复”,你需要还原恢复的sha。

另见Revert Faulty Merge HowTo

答案 1 :(得分:1)

如果你进行git revert合并,那么你的历史记录将会是这样的

     o--o--o
    /       \
o--o------o--o----------------o

             ^                ^
             |                |
           merge           merge reverted

如果你强行推动它看起来像这样

     o--o--o
    /       
o--o------o

如果没有其他开发者已经撤销合并,那么强制推送会更好,因为历史记录会更清晰。

E.g。分支真的合并了吗?

     o--o--o
    /       \
o--o------o--o--------------------o

             ^                    ^
             |                    |
Seems to be merged here, but reverted here.