コマンド使用: 1. git add。 (追加した後、すべてリセットします) 2. git reset。 3. git checkout。私のステージングされたファイルを回復するにはコミットされません?
私がそれらをすべてチェックアウトした後、私はそれらを必要としています。変更を取り戻す方法はありますか?
コマンド使用: 1. git add。 (追加した後、すべてリセットします) 2. git reset。 3. git checkout。私のステージングされたファイルを回復するにはコミットされません?
私がそれらをすべてチェックアウトした後、私はそれらを必要としています。変更を取り戻す方法はありますか?
ファイルがあなたの言ったようにステージングされた場合、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/
ディレクトリに保存されます。
はい、変更を行った場合は、絶対にファイルを元に戻すことができます。 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をご覧ください。
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