ブランチの以前のコミットから確認できるにもかかわらず、特定のコミットが git 履歴から消えたように見える理由を理解できません。
master
次のタグが含まれていることがわかりますv2.1.1.332
。
$ git branch --contains v2.1.1.332
* master
lib/facebook-ios-sdk
fromのコミット ログは次のmaster
とおりです。
$ git log --format=%h master -- lib/facebook-ios-sdk
4b23dc7
3cc007d
b14fbda
3e5c85d
ab962d1
d3da048
d765573
lib/facebook-ios-sdk
私のgitリポジトリの通常のパスではなく、gitサブモジュールであることに注意してください。
から同じパスのログをコミットしますv2.1.1.332
。
$ git log --format=%h v2.1.1.332 -- lib/facebook-ios-sdk
e5ed45f
4b23dc7
3cc007d
b14fbda
3e5c85d
ab962d1
d3da048
d765573
コミットに注意してくださいe5ed45f
。明らかに存在しますが、存在しv2.1.1.332
ませんmaster
! これはどのように可能ですか?
さらに興味深いのは、次のものが含まれgit-branch
ていることを示してmaster
いますe5ed45f
。
$ git branch --contains e5ed45f
* master
また、実行するgit log master
とe5ed45f
、リストに表示されます。でパスを指定すると、このコミットが表示されないだけですgit log
。
なぜ私はこれをすべて尋ねているのですか?lib/facebook-ios-sdk
これ自体は奇妙な状態ですが、サブモジュールが誤って以前のコミット (4b23dc7
のツリーにあるもの)に設定されていたことに気付きました。を使用して不正なコミットを探し始めたところ、git log master -- lib/facebook-ios-sdk
これに遭遇しました。現在、このサブモジュールのコミットが以前の値にどのように変更されたかはわかりません。
EDIT wereHamster on #git は私を指摘しましたgit log --full-history
。このオプションを使用すると、欠落しているコミットが表示されます。
$ git log --format=%h --full-history master -- lib/facebook-ios-sdk
e5ed45f
4b23dc7
3cc007d
b14fbda
3e5c85d
ab962d1
aa43dc3
d3da048
d765573
ただし、サブモジュールに対して間違ったコミットがチェックアウトされる理由はまだ説明されていません。
$ git show --format=%b e5ed45f -- lib/facebook-ios-sdk
diff --git a/lib/facebook-ios-sdk b/lib/facebook-ios-sdk
index cb42580..de7509b 160000
--- a/lib/facebook-ios-sdk
+++ b/lib/facebook-ios-sdk
@@ -1 +1 @@
-Subproject commit cb425807b1f25f916e48b35e06197bccc8b881be
+Subproject commit de7509b8bff6df7163738a979567a72fd4a13ff8
# This command was run on master
$ git submodule lib/facebook-ios-sdk
cb425807b1f25f916e48b35e06197bccc8b881be lib/facebook-ios-sdk (v1.1-20-gcb42580)