2012-03-26 10 views
9

は、相対的なサブモジュールのnoobなので、私はその起源からして私のサブモジュールを更新したかった、としました:私のgitサブモジュールの状態は何ですか?どのように私はそれをきれいにすることができますか?

git pull origin master 
:修正しようと

remote: Counting objects: 111, done. 
remote: Compressing objects: 100% (3/3), done. 
remote: Total 57 (delta 54), reused 57 (delta 54) 
Unpacking objects: 100% (57/57), done. 
From github.com:eteanga/smarty 
    8e9a011..818ab3e master  -> origin/master 
You are not currently on a branch, so I cannot use any 
'branch.<branchname>.merge' in your configuration file. 
Please specify which remote branch you want to use on the command 
line and try again (e.g. 'git pull <repository> <refspec>'). 
See git-pull(1) for details. 

git pull 

はこれがもたらしました

出力:

From github.com:eteanga/smarty 
* branch   master  -> FETCH_HEAD 
Updating 8e9a011..818ab3e 
Fast-forward 
[snip] 

更新されたコードがありましたが、私は現在どのブランチでも作業していません。

サブモジュールを正しく更新するにはどうすればよいですか?現在の状態を修正するにはどうすればよいですか?

答えて

16

git submodule updateの後、サブモジュールのHEADは、スーパープロジェクトに保存されたサブモジュールコミットハッシュに設定されます。

サブモジュールのディレクトリで:あなたはorigin/masterに新しいコミットを追跡するために、サブモジュールでHEADをリセットしたい場合は、最初masterにチェックアウトした後、変更をプルする必要が

git checkout master 
git pull origin master 
+0

おかげで親切に、その働いたようだ。このメインリポジトリがチェックアウトされた各マシンで最新のサブモジュールコードを取得できるように、このアップデートを行う必要がありますか? – eoinoc

+0

私は同じ問題を抱えています。チェックアウトされた各レポのサブモジュールごとにこれを行う必要があります。私は 'git clone --recursive'を使ってマスターレポをクローンし、必要に応じて各サブモジュールの変更をプッシュしてプルするだけのソリューションを見つけたいと思います。誰でもこれを行う方法を知っていますか? – Simon

+2

**ちょうど私に当たってください**: 'git submodule foreach ' *の後に、上記の答えで両方のコマンドを実行するとそのトリックを行うようです。しかし、潜在的な副作用の不確実性... – Simon

関連する問題