【发布时间】:2011-06-13 08:53:48
【问题描述】:
考虑这种情况:
- 开发者 A 提交:#n
- 开发。 B 确实提交了 #n+1
- 开发。 A 确实提交了 #n+2
- 并提交 #n+3
然后发现在他的提交 #n+2 中他引入了一个缺陷。
如何开发。回滚他的最后 2 次提交并继续开发提交 #n+1?
试过git reset --hard HEAD~2*,但它又回到了开发者A的提交#n。
【问题讨论】:
-
git reset HEAD~2 应该重置为 #n+1 提交,如果你当时已经拉了 B 次提交。你拉他们了吗?
-
...不是在 #n+2 提交之前。它是:[0] B 推
commit#n+1, [1] Acommitted #n+2, [2] 不成功push, [3]pull, [4]push.所以现在在 github 上有一个提交 (#n+2) 和一个合并分支“master”(#n+3)。 -
如果你已经发布了提交,你不应该使用reset来回滚它。 (如果你不知道的其他开发人员拉了,这将导致痛苦。)相反,使用 revert 并进行新的提交,将你带到你想要的状态。切勿更改已发布的历史记录。见book.git-scm.com/…