如何使顶级git跟踪另一个子目录git下的所有文件 命令序列
mkdir-topdir如何使顶级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另一个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
请注意缺少尾部斜杠:
表示gitlink,而mysubmodule
是由签出的子模块创建的文件夹mysubmodule/
- 将其添加回父repo的索引:
(在这里,您可以添加或不添加尾随斜杠,这无关紧要)git add mysubmodule
- 提交在
中添加和显示的新文件mysubmodule
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