我无法推动我对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")
答案 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)
就我而言,这只是我的愚蠢-我在错误的文件夹中:
(*)错误为:
git status
的子模块文件夹是子模块存储库的实际克隆,我们称之为{{1 }},我只是认为,我正在~/workspace/mySubModuleRepo