web-dev-qa-db-ja.com

削除された追跡されていないファイルをgitで復元することはまだ可能ですか?

昨日、masterブランチにいくつかの変更を加えたが、それらを追加してコミットするのを忘れたとしましょう。そして朝に私はやった

git reset --hard

この状況で削除されたファイルを復元することは可能ですか?

23
Said Kaldybaev

一部の優れたIDEは、ローカルの履歴としてファイルを追跡します。外部からファイルを削除した場合(たとえば、git reset)親ディレクトリをクリックしてIDEをクリックし、[ローカル履歴と比較]を選択できるはずです。

この機能をPHPStorm IDEで正常に使用しましたが、追跡されていないファイルがユーティリティによって一掃されました...

55
Jovan Perovic

いいえ…………そうではありません。

14
Wes Crow

git reset --hardは非常に危険なコマンドなので、次回使用するときには注意が必要です:)

これらのファイルのコミットがない場合は、復元できない可能性があります。

それ以外の場合は、reflogコマンドが役立ちます。

5
Tim

承認された回答が投稿されたため、手順が少し変わったようですが、考え方は同じです。

受け入れられた回答に追加するために、Webstorm 2016を使用して削除したファイルを復元することができました。

  1. 最初に、git git clean -fを使用して強制クリーンを実行してファイルを失いました。
  2. それを回復するために、私はWebstormに行き、次の手順を実行しました。

    • プロジェクトの[プロジェクト]タブに移動し、右クリックして[ローカル履歴]の[履歴の表示]を表示します。 ( この画像に示すように

    • 「Show History」をクリックすると、「External Change-> Revert」が含まれたポップアップが表示されます。クリックして、右側の目的のファイルを元に戻します。 ( 添付の画像に示すとおり

    • 上記の2つの手順が完了すると、[プロジェクト]タブにファイルが表示されます。 「ローカル履歴」ポップアップは、この添付画像のようなものを表示します。 Reverted to External Change Gitに追加するオプションを取得します。

    • 追跡を解除するには、コマンドラインからgit reset HEAD <filename>を実行します。

4
Amit

git reset --hardは追跡されていないファイルを削除しません。 git cleanは、しかし、します。

ただし、git addファイル、しないでくださいgit commitそれらを実行してからgit reset --hardそれらのファイルは失われます

この答え に示されているように、それらは回復できるため、問題ありません。 (まあ、次までgit gc)。

2
Pod

追跡されていない削除済みファイルの以前のバージョンにはgitからアクセスできません。これは、コーラスのために存在しないためです。私はそれらをいくつかのバックアップから復元するでしょう(おそらくide/editorによって隠されたバックアップファイルが残っているのでしょうか?)、あるいは、そのファイルシステムでの作業を過度に避け、復元ツールの検索を開始します。

1
Riccardo T.

git fsck がお手伝いできる場合があります。

まだガベージコレクションを実行していない場合は、役立つ場合があります。 BLOB IDを取得したら、次のように言うことができます。

git show {blobId}

1

Intellijで、追跡されていない変更を元に戻す方法

ステップ1:フォルダを選択し、右クリックします

Setp 2:ローカル履歴に移動してから、履歴の表示に移動します

enter image description here

ステップ3:誤って元に戻した追跡されていないファイルを選択します。次に、右側のパネルでそれらのファイルを選択し、変更を元に戻すと、ファイルが元の形式に戻ります。

enter image description here

1
Arpan Saini