我们意外地将分支XYZ合并到DEV中并将其推送到原始仓库.这是使用--no-ff完成的,以创建单独的合并提交.一旦我意识到错误的合并,我做了一个git revert来创建一个恢复提交并将其推出.一切都很好,有很多欢乐......
直到我们试图将XYZ合并到开发中.最初的混淆是由于在合并的dev分支上找不到添加到XYZ的大量文件.然后我意识到DEV分支具有恢复提交,该恢复提交删除了由于合并而添加到XYZ以及随后到DEV的所有文件.
这是简化的事件链:
$ git checkout dev
$ git branch xyz
$ git checkout xyz
$ git add files/foo.xyz
$ git commit -m "blargh"
Run Code Online (Sandbox Code Playgroud)
在这里意外合并发生:
$ git checkout dev
$ git merged xyz
$ git push origin dev
Run Code Online (Sandbox Code Playgroud)
这是我试图挽救这一天:
$ git revert <SHA>
$ git push
Run Code Online (Sandbox Code Playgroud)
恢复提交到位,每个人都很开心
... more work happens ...
Run Code Online (Sandbox Code Playgroud)
那么,现在终于合并xyz了:
$ git checkout xyz
$ ls files/foo.xyz
files/foo.xyz
$ git checkout dev
$ git merge xyz
$ ls files/foo.xyz
File not found
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
a)什么是回滚提交的好方法,特别是如果它们被推送到其他回购?git revert似乎是正确的做法,但在合并问题之后,我不再那么肯定......
b)假设git revert是正确的方法,如何处理上述合并场景?
PS:如果这个问题已经得到解答我很抱歉,但我真的不知道该搜索什么.如果有答案,请指导我.谢谢.
Mar*_*air 15
a)什么是回滚提交的好方法,特别是如果它们被推送到其他回购?git revert似乎是正确的做法,但在合并问题之后,我不再那么肯定......
如果您已经与可能已经提取该版本的其他开发人员共享了合并版本,那么您完全可以认为git revert合并提交是正确的.
b)假设git revert是正确的方法,如何处理上述合并场景?
这实际上是git中的经典问题.在Pro Git博客的这篇文章中提出了一个很好的(但非显而易见!)处理这个问题的方法(并且很好地解释了)- 简而言之,这个想法是在再次合并分支之前恢复还原提交.
更新:也有一个同样的问题的另一个讨论被Linux Torvalds的,可能也有帮助.
| 归档时间: |
|
| 查看次数: |
3923 次 |
| 最近记录: |