2016-08-31 11 views
2

私は多くのコミットを作ってみましょう、1,2,3,4,5,6(ハッシュ)と呼んでみましょう。リベースとリセットと復元?私はちょうどロールバックしたい

私はハッシュ6でコミットしているとしましょう。私がやりたいことは、ハッシュ3に戻り、コードベースの状態を、ハッシュ3にコミットしたときと同じようにすることです。コミットは決して起こらなかった。

私がthisのような答えを見ると、誰もが異なる答えを持っているようです。 reset,revert,rebase?私はそれらの3つの単語の違いを英語で分かっているのかどうかもわかりません。

私は以前のコミットになりたいです。誰かがこれをする方法を教えてもらえますか?

+1

をこのブランチをPRを作成したり、マージ: https://stackoverflow.com/questions/28166547/what-are-the-differences-between-revert-amend-rollback-and-undo-a-com – Jubobs

+0

'reset'はあなたのRepoをリセットすることを意味します異なるコミットで(歴史すべて)。 'revert'とは、別のコミット時と同じようにコードを作成するためにコミットを追加することですが、履歴は異なります(履歴には古い状態と異なる状態に戻るパスが含まれます)。 'rebase'はコードをまったく変更しませんが、履歴を変更するだけです。 –

+0

また、http://stackoverflow.com/questions/4114095/how-to-revert-git-repository-to-a-previous-commit –

答えて

7

ブランチを既にプッシュしている場合や、プッシュした場合は、git revert $COMMIT...に限定されます。これにより、あなたがコミットしたことをすべて取り消すコミットが作成されます($COMMIT...)。あなたがそう$COMMITに分岐なしのあなたの分岐ポインタを移動しますどの単にgit reset $COMMITすることができます、完全にローカルおよびプライベートあなたのコミットを保持している場合は

git revert HEAD~2..HEAD 

:最後の三つのコミットを元に戻すたとえば

次のコミットが含まれます。

インデックスと作業ツリーの状態によっては、git reset --soft $COMMITまたはgit reset --hard $COMMITのいずれかのオプションが必要な場合があります。最後の三つ前にコミットにあなたのブランチをリセットする例えば

git reset HEAD~3 

git rebaseは、あなたが望むもののような音はありません。

あるコミットから別のコミット(別のベース)に基づいて、つまり「rebase」に基づいてコミットの一部をコピーまたは移動する場合に使用します。どのようにこの方法について

-1

:あなたは、ハッシュ3.

  • のためのブランチを作成

    1. は(ハッシュ6)マスターに関連

  • +1

    彼がコミット3に行きたい場合は、彼が間にファイルを追加した場合、これは動作しません3および6。 – Xys

    関連する問題