2010-12-15 20 views
21

私は、1つのサブモジュールを持つ簡単なプロジェクトを持っています。コミットをgitサブモジュールからプッシュできないのですか?

$ git submodule 
964737623a362f6303e87ec41f2c7090c8c2c093 lib/mongodb-php-odm (heads/master-1-g9647376) 

私はそのサブモジュールに変更を加えてコミットしましたが、それらをgithubにプッシュすることはできません。

$ cd lib/mongodb-php-odm 
$ git branch 
* (no branch) 
    master 
$ git remote -v 
origin [email protected]: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 

それは「すべては最新の」964737コミットので、githubのにプッシュされていないと言う理由を私は理解していません。私は間違ったことをした可能性がありますが、どういうことになるのでしょうか。

このサブモジュールの最新のコミットをgithubにプッシュするにはどうすればよいですか?

答えて

14

あなたはブランチにコミットしていないようです。つまり、コミットはブランチの一部ではないようです。立っているブランチを作成し、gitkを起動してmasterと比較し、必要に応じてcherry-pickまたはrebaseを実行します。

+8

ありがとうございました。私は正しい方向に向かいました。ここでは、私が丁度取ったステップがあり、それは魅力のように働いた。今はかなりシンプルに見える... git checkout -b temp; git checkout master; git merge temp; git branch -d temp; git push origin master; – ColinM

+1

これは通常、サブモジュールが入る状態です。gitサブモジュールコマンドが特定のコミットをチェックアウトすると、切断されたHEADモード(ブランチがチェックアウトされず、特定のコミットのみ)で実行されます。 – Cascabel

+2

[ブランチにしないとどうするか](http://edspencer.net/2009/10/git-what-to-do-if-you-commit-to-no-branch.html)は良いこの状況を解決するための記事。 –

5

@ColinM、私は完全な解決策であるため、あなたのコメントを答えに移すべきだと思います。それは全く同じ問題を解決するのに役立ちました!ありがとう - フアンカルロスモレノ

私はここでそれを行います。

Schefferが言ったように、あなたは「HEAD-less」コミットをしています。

cd lib/mongodb-php-odm 
git checkout master 
git merge [email protected]{1} 
git push origin master 

EDIT::必要な一切のクリーンアップがないので代わりに、一時的なブランチやタグの[email protected]{1}を使用すると簡単ですColinMが言ったように、あなたはそれがこのようにバックマスターにコミットマージすることができます。式[email protected]{1}はHEADの前の値を意味し、この場合はヘッドレスブランチ上の新しいコミットになります。

+0

あなたがやっていることとその問題をどのように解決するのかについての説明を含めてください。 – Barmar

+1

@Barmar、git-submodulesはブランチではなく特定のコミットをチェックアウトするので、 "detached heads"というサブレポを残します。これらのステップ(ColinMによって提案された)は、現在のコミットをプッシュする前に 'master'ブランチにマージします。 – cdunn2001

関連する問題