GitHubで迷子のコミット

GitHubリポジトリで、https://github.com/ユーザ名/リポジトリ名/tree/ハッシュ値(40桁) にファイルは存在するが、Commits の一覧に現れない、迷子になってしまったコミットというのが存在しうる。コミットの属するブランチが削除された場合、そのコミットが孤立してしまい Commits の一覧に現れなくなる。

そのようなコミットのページには「This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.」と表示される。

一般に、git で迷子になったコミットも、ターミナルで下記コマンドを実行すれば一覧表示に現れる。

git log --all --graph --oneline --reflog

それでもダメな場合、下記のコマンドで現れる場合もある。

git fsck --verbose 2>&1 | grep -o -E '[0-9A-Fa-f]{40}' | grep -v -E '0{40}' | sort -u | git log --stdin "$@"

しかし、他人のリポジトリをクローンして上記のようなコマンドを実行しても、ブランチが削除された迷子コミットは見えない。

参考