2017-08-03 14 views
3

コマンド使用: 1. git add。 (追加した後、すべてリセットします) 2. git reset。 3. git checkout。私のステージングされたファイルを回復するにはコミットされません?

私がそれらをすべてチェックアウトした後、私はそれらを必要としています。変更を取り戻す方法はありますか?

+0

https://stackoverflow.com/questions/7147680/accidentally-reverted-to-master-lost-uncommitted-changesおよびhttps://stackoverflow.com/questions/11094968/in-git-how-canをご覧ください。 -i-recover-a-staged-file-was-was-reversed-before-commitを実行すると、潜在的に可能性があります。 – Chris

答えて

2

ファイルがあなたの言ったようにステージングされた場合、git fsckコマンドに--lost-foundオプションを付けてファイルを戻すことができます。あなたがgit fsck --lost-foundを実行する場合

あなたは(潜在的に多くのダングリングブロブ線で)このようなものが表示されます。

Checking object directories: 100% (256/256), done. 
dangling blob 84eab6f56e81cebe1356c9c2a6e2882c05f5fc01 

これらのダングリングブロブのいくつかは、あなたの不足しているファイルである可能性があります。

git show <SHA of a dangling blob>を実行すると、そのファイルの内容を表示できますが、ファイル名は失われている可能性があります。

ただし、出力を適切なファイルにコピーすることができます。または、git fsck --lost-foundを実行した後、ぶら下がったブロブは、リポジトリのルートにある.git/lost-found/other/ディレクトリに保存されます。

0

はい、変更を行った場合は、絶対にファイルを元に戻すことができます。 git addを実行すると、ファイルは実際にGitのオブジェクトデータベースに追加されます。 bar.txtのエントリは、ファイルのオブジェクトIDが含まれていることを

% git add bar.txt 
% git ls-files --stage 
100644 ce013625030ba8dba906f756967f9e9ca394464a 0 bar.txt 
100644 6af0abcdfc7822d5f87315af1bb3367484ee3c0c 0 foo.txt 

注:あなたが現時点では、Gitは、インデックス内のファイルを配置します。 Gitは実際にオブジェクトデータベースにファイルを追加しました。この場合、Gitは緩いオブジェクトとしてリポジトリに追加しました:

% ls -Flas .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a 
4 -r--r--r-- 1 ethomson staff 21 14 Jun 23:58 .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a 

これらのファイルは最終的にゴミを収集することます。しかし、これは月の日で起こるでしょう。これらのファイルがガベージコレクトされるまで、それらを回復することができます。

これを行う最も簡単な方法は、対話型モードでdownload and install the git-recover programにある:

% git recover -i 
Recoverable orphaned git blobs: 

61c2562a7b851b69596f0bcad1d8f54c400be977 (Thu 15 Jun 2017 12:20:22 CEST) 
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod 
> tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
> veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
> commodo consequat. Duis aute irure dolor in reprehenderit in voluptate 

Recover this file? [y,n,v,f,q,?]: 

git-recoverはコミット(またはインデックス中)でないオブジェクトデータベース内のファイルを検索します。 git-recoverについて詳しくは、the blog post announcing itをご覧ください。

関連する問題