2016-01-12 33 views
6

私は驚いています。私はこれについての答えを見つけることができませんでした。Git - 削除されたコミットを回復できますか?

削除したコミットをgitで回復/復元できますか?

は例えば、これは私がやったことです:

# Remove the last commit from my local branch 
$ git reset --hard HEAD~1 

# Force push the delete 
$ git push --force 

さて、削除されたコミットされ戻って取得する方法はありますか? gitは内部的に削除を記録(ログ)しますか?

+0

あなたはあなたの前のHEADは、GitのREFLOGを通じてコミット見つけて、もう一度あなたに – Martin

答えて

32

あなたはそれの参照をルックアップするためにreflogを使用することができますコミット戻ってそれを取得します。

リファレンスログ、または「reflogs」、枝の先端と 他の参照がローカルリポジトリで更新された記録。

を実行し、このコマンド:

git reflog 

は、最初のいくつかのエントリをスキャンし、それが失われたコミットを見つけます。そのコミットの識別子を追跡します(第1列または第2列のいずれかを使用できます)。 IDを "ID"と呼ぶことにしましょう。あなたがリセットを行うことができます--hardなかったので、あなたは余分な作業を行っていない場合は

git reset --hard ID 
git push -f origin master 

をあなたがリセット以降に他の作業を行った場合は、もしバックの上にチェリーピックできたあなたこのようなブランチ:

git cherry-pick ID 
git push origin master 
+1

感謝を、それをチェックアウトすることができます – niahoo

4

はい、あなたはreflog使用にコミットあなたを見つけることができます。

git reflog 

は/あなたのリポジトリに作成されたされたすべてのコミットを表示するには - この後、あなたが削除にチェックアウトする必要がありcheckoutコマンドによってコミット

git checkout <your commit-SHA> 

やチェリーピックそれによって:

git cherry-pick <your commit-SHA> 
関連する問題