2016-12-29 16 views
1

私はGit rebasingを初めて使用しており、完全に簡単にrebaseを元に戻したいと考えています。私はいくつかのステップを含む解決策を見つけ、git reflogのような高度なコマンドを使用しました。私はそれらを正しく適用することができず、正確に何をするかを理解するのに多くの時間を必要とするだろうと思う。git rebaseを元に戻す最も簡単で素早い方法は何ですか?

「ダム」であっても、簡単かつ迅速な解決策がありますか?

自分の "ダム"ソリューション:ファイルシステムレベルでプロジェクトフォルダを複製し、 "失敗した"リベース後に元のフォルダを削除し、元の名前に変更します。

+0

あなたはリベースを押しましたか? –

+0

@AkramFares:いいえ – mrplow

+0

rebaseの前にcheckout commit idを試すことができます –

答えて

1

参照「ORIG_HEAD」は、以前のHEADコミットを格納し、リベースまたはマージを元に戻します。ドキュメントから

git reset --hard ORIG_HEAD

:あなたは簡単に変更できるように

ORIG_HEADは、その動作の前にHEADの位置を記録するために、思い切った方法であなたの頭を移動するコマンドによって作成されますあなたがそれらを実行する前の状態に戻るブランチの先端

ドキュメントは、この特定の目的のために設計されていることを示唆しています。

+0

_ほとんどのケース_私はそれが私のためにはうまくいかず、例外が何であるかを知るために時間を費やす必要があります。 :) – mrplow

+0

私はちょうど私のお尻をカバーすると言った。ドキュメントには、その目的のために設計されていることが記載されています。問題は実際には、人々が混乱に陥り、実行したコマンドが何であるか、リベースが最後に実行されたコマンドかどうか、そのようなことはわかりません。 – bcmcfc

0

リベースを行う前に、現在の仕事をgitサーバー(githubなど)にプッシュします。

安全にリベースすることができます。元に戻す場合は、フォルダを削除してサーバーから複製するだけで済みます。または上流のヘッドにリセットします。

+0

リベースを使用して私のフィーチャーブランチのローカルコミット履歴をパブリックリポジトリーにプッシュする前にクリーンアップする場合。これは残念なことに実行可能なオプションではありません。他のユースケースにはまだまだ良い解決策です。 – mrplow

0

これはまったくローカルなものである限り、リベースとリバースの間にブランチをプッシュしないで、リベース元と同じコミットで追加のバックアップブランチを作成することから始めてください。そのブランチは同じままであり、何かが間違っている場合は、そのブランチにリセットできます。そして、バックアップブランチは、あなたがそれを削除するまで周囲にとどまります。

でバックアップブランチを作成します。リベースを行うその後

git branch backup 

git rebase <branch-to-rebase-on> 

あなたがリベースが完了した後に戻したい場合は、単に実行します。

git reset --hard backup 

これにより、現在のブランチがバックアップと同じコミットにリセットされます。これは、リベースの前に開始した場所です。変更やコミットはすべて破棄されることに注意してください。 (例えば、競合を固定して)あなたはリベースをキャンセルすること、リベース中に発見した場合は

、いつでも行うことができます。

git rebase --abort 
関連する問題