命令序列
mkdir topdir
mkdir another-git-directory
touch fileC
touch fileD
git add .
git commit -m "sub-dir init"
cd ..
touch fileA
touch fileB
git add .
git commit -m "top-dir init"
git ls-files
// 现在我们可以看到顶层 git 没有跟踪 fileC 和 fileD //
git ls-files -o
// 这不会向我们显示 fileC 和fileD 作为未跟踪的文件//
我的问题是:我们如何使“git ls-files -o”显示子目录中未跟踪的文件?为什么 git 的行为是这样的,因为我希望 git ls-files 显示所有未跟踪的文件(即使它在另一个子目录 git 中)?
我知道我可以让顶级 git 使用“git add */.”来跟踪子目录文件......但我很想知道为什么上面的问题。谢谢!
目录结构
topdir + +-- .git +-- fileA +-- fileB + another-git-directory +-- .git +-- fileC +-- fileD
更新(6 月 26 日)
我发现这个线程Unable to track files within Git submodules和这个 url (cn) http://blog.ossxp.com/2010/01/425/它解释了如何解决这个问题。
解决方案:
git rm --cached another-git-directory #没有尾部斜杠
git add another-git-directory/.
git 提交
'git rm --cached path/to/sub-dir-or-sub-module' 将告诉顶层目录不要将子目录视为子模块......我认为......