所以我以某种方式设法创建了一个zombie git子模块。
$ cat .gitmodules
[submodule "Source/CrashProbe"]
path = Source/CrashProbe
url = https://github.com/bitstadium/CrashProbe.git
git认为子模块没有跟踪:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
Source/CrashProbe/
Deinit没有工作:
$ git submodule deinit Source/CrashProbe
error: pathspec 'Source/CrashProbe' did not match any file(s) known to git.
这也不是:
$ git rm --cached Source/CrashProbe
fatal: pathspec 'Source/CrashProbe' did not match any files
......尽管如此:
$ ls .git/modules/Source/CrashProbe/
FETCH_HEAD gitdir objects
HEAD hooks packed-refs
branches index refs
config info sourcetreeconfig
description logs
这也不是:
$ git config -f .git/config --remove-section Source/CrashProbe
fatal: No such section!
......尽管如此:
$ cat .git/config
...
[submodule "Source/CrashProbe"]
url = https://github.com/bitstadium/CrashProbe.git
关于我到目前为止所见到的所有SO答案已经耗尽,所以我的问题是:我如何摆脱这个混乱并拥有一个合适的子模块?
答案 0 :(得分:1)
尝试手动删除子模块文件和声明。
.gitmodule
以删除Source/CrashProbe
。Source/CrashProbe
文件夹(简单删除,不需要git命令,因为它无论如何都是未跟踪的).git/modules
文件夹,删除其中的所有Source/CrashProbe
跟踪。完成后,添加并提交(以恢复干净状态)。
然后再次尝试你的git submodule add命令
git submodule add -- https://github.com/bitstadium/CrashProbe.git Source/CrashProbe
答案 1 :(得分:1)
Aaaand事实证明我忘了做git commit
。
我如何讨厌git及其神秘的界面......
编辑:我创建了子模块,但在我的提交中没有包含子模块目录。这使得repo处于不一致状态(.gitmodules已提交,子模块未提交)。我们说,Git的错误报告缺乏。