web-dev-qa-db-ja.com

Git-削除されたコミットを回復できますか?

驚いたことに、SOでこれに対する答えが見つかりませんでした。

Gitで削除されたコミットを回復/復元できますか?

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

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

# Force Push the delete
$ git Push --force

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

47
Atri

そのコミットに戻るには、 reflog を使用してrefを検索します。

参照ログ、または「reflogs」は、ブランチのヒントや他の参照がローカルリポジトリで更新されたときを記録します。

次のコマンドを実行します:

git reflog

最初のいくつかのエントリをスキャンし、失われたコミットを見つけます。そのコミットの識別子を追跡します(1列目または2列目を使用できます)。識別子を「ID」と呼びましょう。

リセットしてから余分な作業を行っていない場合は、次のことができます。

git reset --hard ID
git Push -f Origin master

リセット以降に他の作業を行った場合、次のようにブランチに戻るとチェリーピックできます:

git cherry-pick ID
git Push Origin master
114
Jonathan.Brink

はい、reflog useでコミットを見つけることができます:

git reflog

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

git checkout <your commit-SHA>

または次の方法でチェリーピックします:

git cherry-pick <your commit-SHA>
14

git reflog、別名参照ログ。ローカルリポジトリの履歴に戻ることができます。

https://git-scm.com/docs/git-reflog

4
Parano