tar x
の代わりに誤ってtar c
を実行し、gitリポジトリを数日前のバージョンで上書きしました。これにより、.git
内のオブジェクトを含め、新しく作成したファイルはすべてそのままになります。どうすれば可能な限り回復できますか?
万が一に備えて、最初に混乱全体のコピーを作成してください。
git fsck
ぶら下がっているオブジェクトとコミットを表示します。最新のぶら下がりコミットを見つけます。すべてのコミットハッシュをgitk
にフィードしましたが、一番上に最も「最近の」ハッシュが表示されています。対処するコミットが数個しかないだけでなく、回復するブランチも1つしかありませんでした。これは、複数のヘッドがある場合はより複雑になります。
次にgit stash
現在コミットされていない変更を検査のために隠しておきます。
その後、私はgit reset --hard
上記で決定されたコミットハッシュに。
git stash pop
もかなりきれいにマージされました。欲しいものはほぼすべて戻ってきたと思います。