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