我无法理解为什么某个特定的提交似乎刚刚从我的 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
,就在那时我们遇到了这个问题。现在我们不知道这个子模块的提交是如何更改为以前的值的。
编辑#git 上的 wereHamster 指向我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)