修改了git子模块中的内容,但git子模块说是最新的

时间:2015-01-14 12:30:09

标签: git git-submodules

我无法推动我对git子模块所做的更改。我推动了主项目,并得到了这个

mainProject$ git status
On branch myBranch
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)
  (commit or discard the untracked or modified content in submodules)

     modified:   example/submod (modified content)

no changes added to commit (use "git add" and/or "git commit -a")

但是当我试图推动子模块中的变化时,我得到了

submod$ git status
On branch dev
Your branch is up-to-date with 'origin/dev'.

git --version的输出是

git version 1.9.3 (Apple Git-50)

当我跑步时

mainProject$ git diff example/submod
Submodule example/submod contains modified content

这里发生了什么?我无法在主项目中添加更改

mainProject$ git add example/submod
mainProject$ git status
On branch myBranch
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)
  (commit or discard the untracked or modified content in submodules)

   modified:   example/submod (modified content)

no changes added to commit (use "git add" and/or "git commit -a")

4 个答案:

答案 0 :(得分:3)

您已在子模块中检出了与在主存储库中提交的提交不同的提交。 您可以通过

签出子模块的关联提交
git submodule update

...或者您添加此子模块,使用当前更改提交并推送它:

git add example/submod
git commit -m 'new commits in submodule'
git push origin myBranch

答案 1 :(得分:1)

我也有这个问题并修复它我必须删除子模块并重新添加它。像这样:

git submodule deinit PathTo/SubmoduleName
git rm PathTo/SubmoduleName
sudo rm -rf .git/modules/PathTo/SubmoduleName

git submodule add https://github.com/username/SubmoduleName.git

在此之后,我的项目现在正确显示,没有提交更改。我猜它只是git的子模块实现中的一个错误。

答案 2 :(得分:0)

您已将内容(提交)记录为项目中子模块的当前状态,并且您的子模块已检出该提交(因为状态未提及提交ID的任何差异),但是自签出或提交以来,某些内容已经修改了该内容。

答案 3 :(得分:0)

就我而言,这只是我的愚蠢-我在错误的文件夹中:

  • mainProject显示了“子模块修改后的内容”
  • 子模块*显示“没有更改”

(*)错误为:

  • 我执行git status子模块文件夹子模块存储库实际克隆,我们称之为{{1 }},我只是认为,我正在~/workspace/mySubModuleRepo
  • 中执行此注释