git:子目录中忽略的更改

时间:2012-11-28 06:45:29

标签: git git-submodules

我的仓库中有一个子目录停止跟踪更改。我可以将abc.php文件添加到某个级别以上的任何目录,git status返回预期的结果,但是一旦我将abc.php添加到相关子目录(或更改现有文件),git status空了。我相信子目录使用拥有它自己的git repo,但我可能错了。

我看到git update-index --really-refresh may be an option,但我很担心,因为我将“兄弟”目录中的其他git项目添加到有问题的目录中。 (我在父母回购中没有做任何事情来承认这些,所以希望也没关系。)

也就是说,我有

  1. ... dir / custom(忽略更改的目录)
  2. ... dir / sibling1(sibling dir 1 with own git repo)
  3. ... dir / sibling2(sibling dir 2 with own git repo)
  4. dir及更高版本中的每个父目录都没有问题,并按预期工作。

    我的主要问题:在给定上述结构的情况下,我应该关注运行吗?我还想问一下我应该在主要仓库中使用repos做什么(即以某种方式将它们声明为子模块)?

    感谢。

2 个答案:

答案 0 :(得分:2)

好的,我需要运行以下两个命令才能使其正常工作:

git rm --cached path_to_subdir (no trailing slash)

git add path_to_subdir/*

基于我在原始帖子(git update-index --really-refresh)中尝试运行命令时看到的消息,在子目录中曾经有一个非removed properly的git repo,并且从未被宣布为子模块。

答案 1 :(得分:0)

2种可能性:

  • 忽略目录本身(在任何父目录的.gitignore文件中)
  • 或者在被忽略的目录中有一个.git目录,使其成为嵌套的git仓库(父仓库将忽略其状态)。