1

ブランチの以前のコミットから確認できるにもかかわらず、特定のコミットが git 履歴から消えたように見える理由を理解できません。

master次のタグが含まれていることがわかりますv2.1.1.332

$ git branch --contains v2.1.1.332
* master

lib/facebook-ios-sdkfromのコミット ログは次の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 mastere5ed45f、リストに表示されます。でパスを指定すると、このコミットが表示されないだけです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)
4

0 に答える 0