このquestionは、マスターブランチからのコミットの巻き戻しを処理する継ぎ目です。レポのブランチで同様のgit reset --soft
コマンドを使用することはできますか?またはgit revert
の意味を理解しようとしていますか?裸のレポのブランチから最後のコミットをコミットしないにはどうしたらいいですか?
最終的に私は裸のレポで2つまたは3つのコミット(最後のものではない)で2つのブランチを巻き戻したいと思います。
このquestionは、マスターブランチからのコミットの巻き戻しを処理する継ぎ目です。レポのブランチで同様のgit reset --soft
コマンドを使用することはできますか?またはgit revert
の意味を理解しようとしていますか?裸のレポのブランチから最後のコミットをコミットしないにはどうしたらいいですか?
最終的に私は裸のレポで2つまたは3つのコミット(最後のものではない)で2つのブランチを巻き戻したいと思います。
私はまだレポがどこにあるか明確ではありません。あなたはそれが裸だと言いますが、あなたはあまりにも裸でなければなりません。
ローカルブランチを巻き戻したい場合は、git reset
を使用します。あなたはローカルブランチbeta
を持っているのであれば、あなたはこのようにそれを巻き戻すことができます:HEAD
、HEAD~1
とHEAD~2
:
$ git checkout beta
$ git reset --hard HEAD~2
これは3つのコミットをドロップします。これらは約90日でごみを回収するので、必要ならば戻してください。
あなたはorigin
という名前のリモートレポを持っている(つまり、裸である)、あなたは、あなたが強制プッシュ経由でこれを行うことができ、そこの上に枝を巻き戻したい場合。準備が整う前に、3つのコミットをbeta
にプッシュしたとしましょう。あなたは、あなたの地元のプロジェクトでそれらを保つが、このようなリモート裸のレポからそれらを削除することができます。
$ git push -f origin beta~3:beta
これは、そのリポジトリを使用して他の人に厳しいことができますが、あなたは大丈夫ているように聞こえます。あなただけが裸のレポをお持ちの場合は
はあなたが強制的にそうように枝をリセットすることができます。
$ git branch -f beta beta~3
注:これは、ローカルのブランチを巻き戻しの最初のケースのために働きます。繰り返しますが、これはこのレポを使用している誰にも不愉快です。
あなたのやりたいことによって異なります。 git revert
はを新たに生成しますあなたのリポジトリにコミットして、選択したコミットによる変更を元に戻します。これは、変更追跡の観点からはうれしいことです。元に戻ったものとその理由を見ることができ、後でいつでも決定を再考することができます。
git reset
(--soft
は作業コピーでのみ意味があります)を実行すると、単にリポジトリを元の状態に戻すことができます。これにより、選択したコミット後にコミットが破棄されるため、その履歴は永遠に失われます。リポジトリのリモート作業コピーを持つ人がいると、作業コピーが突然見つからなくなり(git push
を実行したときに誤って変更が再導入される可能性があります)。
自分のリポジトリで他の人と共有していない場合は、git reset
は問題ありません。さもなければ、git revert
はおそらく、リポジトリの履歴にトレースを残し、リモートの作業コピーとうまくやり取りするため、より良い選択です。
間違いなく 'git reset'となります。 'git-reset
あなたは裸のレポに足を引っ張っていることを意味しますか?その枝が巻き戻されるように(遠隔の)裸のレポを望みますか? –
@Pal Notz:はい。その私のレポので、私は他のユーザーの暴力を心配していない。 – Jamie