このシナリオを検討してください。
- 開発者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 committed#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。