最後に、SourceTree ブランチ ツリー ビューから抽出したスクリーンショットを示します (スクリーンショットの中央にギャップがあります)。
その中で、 は#1
かつて分岐していた行を1.7.6.14.X
指し#2
、同じ分岐の現在の状態を指します。
によって参照されたコミットと#3
、その行の前の 8 つのコミットは、以前は branch に関連付けられていました1.7.6.14.X
。その後、別の開発者が同じブランチをチェックアウトし、 で指摘された修正を行ったと思われます#4
。この#4
コミットにより、以前の 9 つのコミットがブランチから削除され、1.7.6.14.X
ぶら下がったままになりました。
その結果、ブランチ1.7.6.14.X
は commit から拡張するのではなく、元の分岐点から開始するようになり#3
ました。
などで実行git fsck
し--unreachable
て--dangling
もエラーは発生しません。私もやってみ--lost-found
ました。
ただし、git fsck <hash of commit #3>
5 つの未解決コミットと多数の未解決タグが生成されます。
Checking object directories: 100% (256/256), done.
Checking objects: 100% (3148/3148), done.
dangling commit ec213...
dangling commit ab82a...
dangling commit 7d262...
dangling commit a6f06...
dangling commit 6674a...
2 つの質問があります。
何がこの状況を引き起こした可能性がありますか (ブランチ
#1
が切り離されたなど)?他のリポジトリに同様の問題があるかどうかを検出するにはどうすればよいですか? (などの切り離されたコミットのハッシュを知る必要はありません
#3
)
更新:
質問 (1) に対する答えが見つかりました。この状況は、ブランチの古いスナップショットを持っていた開発者による、中央のベア リポジトリへの強制プッシュによって引き起こされました。