10

命令序列

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' 将告诉顶层目录不要将子目录视为子模块......我认为......

4

1 回答 1

2
于 2010-06-25T06:47:58.690 回答