1

我无法理解为什么某个特定的提交似乎刚刚从我的 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)
4

0 回答 0