mkdir topdir
mkdir another-git-directory
触摸文件C
触摸文件D
git add。
git commit -m“sub-dir init”
cd ..
触摸文件A
触摸文件B git add。
git commit -m“top-dir init”
git ls-files
//现在我们可以看到fileC和fileD没有被顶级git //
跟踪 git ls-files -o
//这不会将fileC和fileD显示为未跟踪文件//
我的问题是:如何让“git ls-files -o”显示子目录中未跟踪的文件?为什么git表现得如此,因为我希望git ls-files显示所有未跟踪的文件(即使它在另一个sub-dir git中)?
我知道我可以使用“git add * /。”来制作顶级git来跟踪sub-dir文件......但我很想知道上面这个问题的原因。谢谢!
目录结构
topdir + +-- .git +-- fileA +-- fileB + another-git-directory +-- .git +-- fileC +-- fileD
我找到了这个帖子Unable to track files within Git submodules和这个url(cn)http://blog.ossxp.com/2010/01/425/,它解释了如何解决问题。
解决方案:
git rm --cached another-git-directory #no trailing slash
git add another-git-directory /。
git commit
答案 0 :(得分:1)
嵌套式仓库默认为未跟踪
(实际上它将子模块根文件夹跟踪为 gitlink ,special entry in the index)
Git将检测嵌套的.git
repo,父repo会将任何文件状态委托给嵌套的。
要显示跟踪,您可能需要:
git rm --cached mysubmodule
。mysubmodule
表示gitlink,而mysubmodule/
是由签出的子模块创建的文件夹。git add mysubmodule
(此处,您可以添加或不添加尾部斜杠,这无关紧要)mysubmodule
。