无法从git子模块推送提交?

Col*_*inM 24 git github git-submodules

我有一个简单的项目,有一个子模块.

$ git submodule
 964737623a362f6303e87ec41f2c7090c8c2c093 lib/mongodb-php-odm (heads/master-1-g9647376)
Run Code Online (Sandbox Code Playgroud)

我已经对该子模块进行了更改并提交了它们,但是无法将它们推送到github.

$ cd lib/mongodb-php-odm
$ git branch
* (no branch)
  master
$ git remote -v
origin  git@github.com:colinmollenhour/mongodb-php-odm.git
$ git ls-remote .
964737623a362f6303e87ec41f2c7090c8c2c093    HEAD
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/heads/master
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/remotes/origin/HEAD
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/remotes/origin/master
$ git push origin master
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它说"一切都是最新的",因为964737提交还没有被推送到github.我可能做错了什么,但我不知道会是什么......

如何将此子模块中的最新提交推送到github?

Mau*_*fer 15

您似乎没有提交分支,即您的提交不属于任何分支.创建一个你站立的分支,然后启动gitk以与master进行比较,然后根据需要进行cherry-pick或rebase.

  • 谢谢,这让我朝着正确的方向前进.以下是我完全采取的步骤,它就像一个魅力.现在看起来很简单... git checkout -b temp; git checkout master; git merge temp; git branch -d temp; git push origin master; (9认同)
  • [如果你不承担任何分支怎么办](http://edspencer.net/2009/10/git-what-to-do-if-you-commit-to-no-branch.html)是一篇好文章解决这种情况. (2认同)
  • @ColinM,我认为你应该将你的评论转移到答案,因为它是完整的解决方案,这帮助我解决了完全相同的问题!谢谢 (2认同)

cdu*_*001 7

@ColinM,我认为你应该将你的评论转移到答案,因为它是完整的解决方案,这帮助我解决了完全相同的问题!谢谢 - 胡安卡洛斯莫雷诺

我会在这里做的.

正如Scheffer所说,你正在进行"无头"提交.正如ColinM所说,您可以将该提交合并回master,如下所示:

cd lib/mongodb-php-odm
git checkout master
git merge HEAD@{1}
git push origin master
Run Code Online (Sandbox Code Playgroud)

编辑:使用HEAD@{1}而不是临时分支或标记更简单,因为不需要清理.表达式HEAD@{1}表示HEAD的先前值,在这种情况下,它将是无头分支上的新提交.