この問題をどのように解決しますか?使用git fsck
とロギング!
まず、失われた(到達不能な)コミットとBLOBを含むファイルを作成します。(注:次のようなことをした場合git gc
、コミットされたすべてのコミットがガベージコレクションされ、ここでは見つかりません!)
$git fsck --lost-found > lost_found.commits
これにより、次のようなファイルが作成されます。
ダングリングコミットdec2c5e72a81ef06963397a49c4b068540fc0dc3
ダングリングブロブf8c2579e6cbfe022f08345fa7553feb08d60a975
ダングリングブロブ0eb3e86dc112332ceadf9bc826c49bd371acc194
ダングリングブロブ11cbd8eba79e01f4fd7f496b1750953146a09502
ダングリングコミット18733e44097d2c7a800650cea442febc5344f9b3
ダングリングブロブ1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
次に、お気に入りのテキストエディタでこのファイルを開いて、そこからコミット/ブログハッシュをコピーできます。(*咳*vimマクロはこの*咳*に最適です)
これで、このコミットからのようなものでログバックできますgit log --oneline <commit hash>
。または、gitk、tig、またはその他のgitビューアが機能するはずです。
あなたの場合、コミットFのハッシュが見つかった場合、ログには次のようなものが表示されます。
A---B---E---F
早くて簡単!これで、これらすべてのぶら下がっているコミットの背後にあるコンテキストを見つけることができます。
PSはい、私は知っています、遅い投稿ですが、まあ、誰かがここでそれを見つけて、それが役に立つと思うかもしれません。(私がこれを再びグーグルするとき、ほとんどの場合、6ヶ月で私になります)