这个提交怎么能从git历史中消失?

时间:2013-01-08 05:52:29

标签: git git-submodules

我无法理解为什么某个特定的提交似乎从我的git历史中消失了,即使我可以从我之前的分支中看到它。

您可以看到master包含标记v2.1.1.332

$ git branch --contains v2.1.1.332
* master

以下是来自lib/facebook-ios-sdk的{​​{1}}的提交日志:

master

请注意$ git log --format=%h master -- lib/facebook-ios-sdk 4b23dc7 3cc007d b14fbda 3e5c85d ab962d1 d3da048 d765573 是一个git子模块,而不是我的git repo中的常规路径。

lib/facebook-ios-sdk

提交相同路径的日志
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上的仓鼠指向git log master -- lib/facebook-ios-sdk。使用此选项确实显示缺少的提交:

git log --full-history

然而,它仍然无法解释为什么子模块检出了错误的提交:

$ git log --format=%h --full-history master -- lib/facebook-ios-sdk
e5ed45f
4b23dc7
3cc007d
b14fbda
3e5c85d
ab962d1
aa43dc3
d3da048
d765573

0 个答案:

没有答案