このシナリオを検討してください。
- 開発者Aはコミットを行います: #n
- 開発者 Bはコミットします +1を
- 開発者 Aはコミットします +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
+ 1をプッシュ、[1] A commit
ted#n + 2、[2]が失敗push
、[3] pull
、[4]push
でした。したがって、githubには、コミット(#n + 2)とマージブランチ 'master'(#n + 3)があります。
回答:
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
が、agit push -f
も必要だったため、変更はgithubに反映されます。
--hard
現在行っているコミットされていない変更は永久に破棄されることを意味します。作業を破棄せずに前のコミットにロールバックするには、を使用します--soft
。