私はGitを効果的に使用する方法を学習しようとしています、そして私は次のケースをどのように解決するべきか(良い実践/悪い実践?)
マスターに次の一連のコミットがあるとします。
その後、最後の2つのコミットで行われたことが完全に間違っていることに気付き、コミット1からもう一度やり直す必要があります。質問:
git branch tmp # mark the current commit with a tmp branch
git reset --hard Commit1 # revert to Commit1
SO回答 " gitの 'git reset'と 'git checkout'の違いは何ですか? "は、この種の操作について非常に有益です
git reset --hard HEAD~2
も同じことを行います(Commit1
のSHA1を最初に戻す必要はありません)。
Commit2
とCommit3
は引き続きGit参照(ここではブランチ)によって参照されるため、いつでも(git checkout tmp
)に戻すことができます。
実際、 Darien はコメントで言及しています(Commit2
とCommit3
を別のブランチに移動することに関して):
誤って間違ったブランチにコミットしたので、これで移動できました。
git checkout correctbranch
git rebase tmp
git branch -d tmp
これは、最初のブランチがCommit1
にリセットされたため、ここで機能します。つまり、git rebase tmp
は、Commit1
の後のすべてのコミットを再生します(したがって、ここでCommit2
およびCommit3
)新しい「correctbranch
」に。