【问题标题】:git: changes ignored in sub-directorygit:子目录中忽略的更改
【发布时间】:2012-11-15 23:08:55
【问题描述】:

我的存储库中有一个停止跟踪更改的子目录。我可以将 abc.php 文件添加到某个级别以上的任何目录,git status 返回预期的结果,但是一旦我将 abc.php 添加到有问题的子目录(或更改现有文件),git status 就会变为空。我相信子目录 used 有它自己的 git repo,但我可能是错的。

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

也就是说,我有

  1. ...dir/custom(忽略更改的目录)
  2. ...dir/sibling1(同级目录 1 和自己的 git repo)
  3. ...dir/sibling2(带有自己的 git repo 的兄弟目录 2)

dir 及以上的每个父目录都没有问题,并且按预期工作。

我的主要问题:考虑到上述结构,我应该担心运行它吗?我还想问一下我应该对主仓库中的仓库做些什么(即以某种方式将它们声明为子模块)?

谢谢。

【问题讨论】:

  • 是否有指定自定义目录的.gitignore 文件?自定义目录中是否有.git 子目录? (使用ls -a 显示以点开头的隐藏名称。)
  • 我应该提到这两种情况都不是这种情况,尽管再次说明,用于包含 .git 目录的目录可能已被删除。
  • 在你的仓库顶层有没有.gitmodules文件?
  • 不,也不是这样;我也检查了这里的问题:stackoverflow.com/questions/1084969/…

标签: git git-submodules


【解决方案1】:

好吧,我需要运行以下两个命令才能让它工作:

git rm --cached path_to_subdir (no trailing slash)

git add path_to_subdir/*

根据我在原始帖子 (git update-index --really-refresh) 中尝试运行命令时看到的消息,子目录中曾经有一个不是 removed properly 的 git repo,并且从未声明为一个子模块。

【讨论】:

  • 分辨率不错,比我的回答更准确。 +1
【解决方案2】:

2 种可能性:

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

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 2012-01-27
    • 2010-11-08
    • 1970-01-01
    • 2022-10-03
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多