注意:这个问题引用了管理主题,但我认为堆栈溢出更适合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再次开始跟踪下游目录作为子模块?
答案 0 :(得分:1)
事实证明,common
子模块配置无意中被修改,并且所有对此repo作为子模块的引用都从.git/modules
,.gitmodules
和.git/config
中清除。< / p>
我做了git rm -r common/
后跟git submodule add
,现在一切都很顺利。
故事的道德:在.git
文件夹中乱窜可能会导致奇怪的事情发生。