如何使顶级git跟踪另一个子目录git下的所有文件 命令序列

如何使顶级git跟踪另一个子目录git下的所有文件 命令序列,git,git-submodules,Git,Git Submodules,mkdir-topdir mkdir另一个git目录 触摸文件C 触摸屏文件 git添加。 git commit-m“sub dir init” cd.. 触摸文件A 触摸文件b git添加。 git commit-m“top dir init” git ls文件 //现在我们可以看到,顶级git不会跟踪fileC和fileD/ git ls文件-o //这不会向我们显示文件C和作为未跟踪文件归档的文件// 我的问题是:如何使“gitls files-o”显示子目录中未跟踪的文件?为什么git的

mkdir-topdir
mkdir另一个git目录
触摸文件C
触摸屏文件
git添加。
git commit-m“sub dir init”
cd..
触摸文件A
触摸文件b
git添加。
git commit-m“top dir init”
git ls文件
//现在我们可以看到,顶级git不会跟踪fileC和fileD/
git ls文件-o
//这不会向我们显示文件C和作为未跟踪文件归档的文件//

我的问题是:如何使“gitls files-o”显示子目录中未跟踪的文件?为什么git的行为如此,因为我希望git ls文件显示所有未跟踪的文件(即使它在另一个子目录git中)

我知道我可以使用“git add*/”制作顶级git来跟踪sub dir文件。。。但我有兴趣知道为什么要回答上述问题。谢谢

目录结构

更新(6月26日) 我找到了这个线程和这个url(cn),它解释了如何解决这个问题

解决方案:

git rm--缓存了另一个git目录#没有尾随斜杠
git添加另一个git目录/
git提交


“git rm--cached path/to/sub dir或sub module”将告诉top dir不要将子dir视为子模块。。。我认为……

嵌套式回购在默认情况下是未跟踪的。
(实际上,它将子模块根文件夹跟踪为,)
Git将检测嵌套的
.Git
repo,父repo将任何文件状态委托给嵌套的repo

要显示跟踪的用户,您可能必须:

  • 删除gitlink:
    git rm--cached mysubmodule

    请注意缺少尾部斜杠:
    mysubmodule
    表示gitlink,而
    mysubmodule/
    是由签出的子模块创建的文件夹
  • 将其添加回父repo的索引:
    git add mysubmodule
    (在这里,您可以添加或不添加尾随斜杠,这无关紧要)
  • 提交在
    mysubmodule
    中添加和显示的新文件

谢谢你。由于sub-dir git不是由我创建的,所以存在一些限制,所以第一种方法已经过时。对于子模块,正如我从您的链接中读到的,它似乎没有达到我想要的效果,因为我想从顶部目录为所有子目录中的文件生成差异。我已经更新了Git1.7.1并尝试了“git status-u all”,但它仍然没有显示未跟踪的文件c和fileD@insidepower:奇怪的是,这个概念应该是可用的:只需在别处克隆嵌套的repo,然后将其删除,并将其重新创建为子模块。然后git状态将显示对C和D的任何修改(当然只有在您修改它们的情况下)好的,我使用“git config status.submodulesummary true”将submodules summary设置为true,现在它将显示子模块的更改。但它并没有告诉哪些文件发生了更改,只告诉了它的摘要。e、 g.修改:sub-dir2(修改内容)顺便说一句,1.7.1中的“git状态”在大型项目中非常缓慢。我要换回去。。。。sigh@insidepower:奇怪(bis)您是否正在使用msysgit Windows分发版进行git?注意:您也可以尝试
git config status.showUntrackedFiles no
,只查看索引中的stat文件。如果您需要在某个时刻显示未跟踪的文件,您可以始终这样做:
git status-unormal
@VonC:no我正在使用ubuntu,如果我没有记错的话,当前构建的是1.6.0.4。我已经切换回这个版本,git状态恢复到正常速率。现在我不能尝试showUntrackedFiles选项,除非我再次切换回1.7.1。然而,我认为我不能容忍它的“git状态”的速度。。。我想这就是生活:)
 topdir +  
        +-- .git  
        +-- fileA  
        +-- fileB  
        + another-git-directory +-- .git  
                                +-- fileC  
                                +-- fileD