Git正在显示上游存储库中的子模块更改

时间:2013-11-12 21:31:37

标签: git git-submodules

注意:这个问题引用了管理主题,但我认为堆栈溢出更适合git问题

我正在使用git来管理相当大的配置文件堆栈。每个相关的文件批次被分成一个子模块,在测试服务器上开发,然后被拉入生产服务器中使用的“主”分支。

从我的生产服务器,我看到:

 $ git status

  # On branch master
  # Changes not staged for commit:
  #   (use "git add <file>..." to update what will be committed)
  #   (use "git checkout -- <file>..." to discard changes in working directory)
  #
  # modified:   common/manifests/file.pp
  # modified:   updates (new commits)

事情就是这样:common是一个像updates一样的子模块。我希望看到这里的“新提交”措辞要求我将子模块更改提交到“主要”仓库。

如果我进入common目录,我会看到其他更改,但最重要的是, NOT 上游存储库提及的更改。

$ cd common
$ git status

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   manifests/log.pp
#
no changes added to commit (use "git add" and/or "git commit -a")

似乎git知道common文件夹只是在我实际坐在其工作目录中时才是一个单独的存储库,而不是在我在上游目录中时。

git --version返回1.7.11.3

这里发生了什么,以及如何让git再次开始跟踪下游目录作为子模块?

1 个答案:

答案 0 :(得分:1)

事实证明,common子模块配置无意中被修改,并且所有对此repo作为子模块的引用都从.git/modules.gitmodules.git/config中清除。< / p>

我做了git rm -r common/后跟git submodule add,现在一切都很顺利。

故事的道德:在.git文件夹中乱窜可能会导致奇怪的事情发生。