如果我理解这个正确的,其他开发者的本地分支看起来像这样(按时间倒序):
+- (F) His last commit (Required)
+- (E) His commits 2, 3, 4, etc ... (Required)
+- (D) His commit 1 (Required)
+- (C) Your commit 2 (To be discarded)
+- (B) Your commit 1 (To be discarded)
+- (A) Base commit (one that you reset to)
你想接他的承诺d,E,F,并扔掉你提交B和C.如果是这样,在他的分支下面:
- 创建一个标签犯F.
- 复位承诺A.
- 摘樱桃承诺d,E,F。(你可以需要解决合并冲突。)
- 强制推送到远程分支。
这应该达到你想要什么,但是,我想提出以下建议,除非你有一些强有力的理由来这样做:
- 您再次提交撤消更改,并推送到远程。
- 其他开发人员将提交此新提交,并重新整理其更改。
- 然后他把它推到远程。
最终结果将是相同的,除了三个“额外”提交,B,C和“撤消提交”。这确实避免了推力,这本身不是“错误的”,但可能导致有时会导致问题。它还保留了历史上不需要的代码,如果将来需要它,也许在不同的环境中。
非常感谢! – NibblyPig