考虑这种情况:
- 开发人员A进行了提交:#n
- 开发人员 B确实提交了#n + 1
- 开发人员 A确实提交了#n + 2
- 并提交#n + 3
然后发现在提交#n + 2中,他引入了一个缺陷。
如何开发 回滚他的最后2个提交,并继续在提交#n + 1上开发?
尝试过git reset --hard HEAD~2
*,但是又回到了开发人员A的提交#n。
考虑这种情况:
然后发现在提交#n + 2中,他引入了一个缺陷。
如何开发 回滚他的最后2个提交,并继续在提交#n + 1上开发?
尝试过git reset --hard HEAD~2
*,但是又回到了开发人员A的提交#n。
commit
#n + 1,[1] A commit
ted#n + 2,[2]不成功push
,[3] pull
,[4] push
。因此,在github上现在有一个commit(#n + 2)和一个Merge分支“ master”(#n + 3)。
Answers:
它应该回到n + 1提交。您可能在那里也有一个合并提交。您也可以git reset --hard <sha1_of_where_you_want_to_be>
警告!!
--hard
意味着您当前所做的所有未提交的更改将被永久丢弃。
git reflog
,但是我只能访问我的本地reflog信息,例如,提交#n,#n + 2,#n + 3 ...但不能访问#n + 1
git log
,但是git push -f
还需要a,因此修改将反映在github上。
--hard
意味着您当前所做的所有未提交的更改将被永久丢弃。要回滚到上一个提交而不放弃您的工作,请使用--soft
。