假设“master”分支必须始终稳定,那么修复“master”的最佳做法是什么,如果偶然将一个功能合并到“master”中,它会破坏它并且master已被推送到远程?
我曾经重置过以前的稳定提交,然后在该提交上对“master”执行push --force
,但我认为它有点讨厌,因为它涉及重写历史。
在这里,我们找到了一个或多个恢复提交的建议: How to do emergency fixes on master in git?
如果由于某种原因你合并了一个包含5次以上提交的功能,这也有点单调乏味(据我所知,你一次只能恢复一次提交)。
修复破碎的树枝的任何建议我都没想过?
答案 0 :(得分:1)
如果中断是错误合并的结果,那么您只需使用
还原合并提交本身git revert -m 1 $merge_sha
这假设^ 1是主人。
这将恢复合并提交引入的所有更改,无论是来自1次提交还是500次提交。
将来,为了“恢复”,你需要还原恢复的sha。
答案 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.