2017-03-15 17 views
-1

git pull originコマンドを元に戻す方法は?私はsshpemfileを使ってアマゾンサーバーec2-instanceに接続しました。私はこのserverprojectディレクトリに移動しました。そしてranは "git pull origin"です。私はこのaws instanceでこの操作を元に戻したいと思います。これどうやってするの。これはruby on railsアプリケーションサーバー上のgitの "git pull origin"コマンドを元に戻す方法は?

答えて

-1

です。マージを元に戻したいとします。このコマンドを実行します。

git reset --hard 

ます。また、同じコマンドを実行し、decired状態のSHA1を追加して、特定の状態にリセットすることができます。実行:

git reflog 

詳細については、こちらをご覧ください。

+0

最後の "git pull origin"コマンドだけを "ロールバック"したいと思います。上記のソリューションは最後のプルロールバックを実行できますか? – John

+1

最初に 'git reflog'を実行して、リセットしたいコミットからSHA1を取り出し、' git reset -hard [SHA1 of commit] 'を実行してください。 – JonasJR

+0

@JonasJR書かれているとおり、この回答は正しくありません。このようなリセットを行うだけで 'HEAD'にリセットされ、OPはすでにそこにあります。あなたはreflogを使って正しい軌道に乗っていますが、初期リセットコマンドはOPが尋ねたことを元に戻しません。 –

0

答えはgit reset --hardであり、正確ではありません。 pullを完了すると、HEADは更新した新しいポイントに移動しました。 git resetの暗示された参照はHEADです。このコマンドでは、あなたがすでに存在する場所にリセットされます。

reflogに言及すると、JonasJRが近づいていました。 reflogはあなたが取るすべての行動のローカル履歴です。あなたがちょうどプルを実行した場合、それはこのように見えるかもしれません。ここで

$ git reflog 
6dd1a7b93 [email protected]{0}: pull: Fast-forward 
e45d35313 [email protected]{1}: checkout: moving from feature to master 
... more ... 

私が取った最後の二つのアクションを持っています。引っ張り、その直前に私は支店を変更するためにチェックアウトを使いました。

プルの前の状態に戻るには、ref([email protected]{1})を使用できます。

git reset --hard '[email protected]{1}' 

ここで、reflogを見ると、以前の状態にリセットされます。リセット自体は履歴の一部になっているので、必要に応じてreflogを使用して誤った取り消しを元に戻すこともできます。

$ git reflog 
e45d35313 [email protected]{0}: reset: moving to [email protected]{1} 
6dd1a7b93 [email protected]{1}: pull: Fast-forward 
e45d35313 [email protected]{2}: checkout: moving from feature to master 

あなたが見ることができるように、我々は今、離れて6dd1a7b93から消えバック(この時点で[email protected]{2}[email protected]{0}の両方で)以前の状態、e45d35313に行ってきました。

reflogは、このレポのコピーにローカルであることに注意してください。あなたが別の場所でコピーをチェックアウトすると、完全に独立したreflogがあります。これはあなたのプロジェクトの他の人々と共有されません。

reset --hardの通常の免責条項がここに適用されます。現時点でコミットされていない変更がある場合、このコマンドはそれらを消去します。その場合は、リセット中にgit stashを使用して設定してください。

関連する問題