2012-03-26 9 views
9

Als ein relativ Submodule noob, wollte ich mit von seinem Ursprung meiner Submodul aktualisieren, und tatWas ist der Status meines Git Submoduls, und wie kann ich es aufräumen?

git pull 

Dies ergab:

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. 

zu beheben Versuch:

git pull origin master 

Ausgabe:

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

Jetzt scheint es, dass ich den aktualisierten Code, , aber habe, bin ich derzeit nicht an jedem Zweig arbeiten.

Was hätte ich tun sollen, um mein Submodul richtig zu aktualisieren, und was sollte ich tun, um diesen aktuellen Zustand zu beheben?

Antwort

16

Nach wird HEAD im Submodul auf den Submodul-Commit-Hash gesetzt, der im Superprojekt gespeichert ist. Wenn Sie die HEAD im Submodul zurücksetzen wollen in origin/master die neuen Commits zu verfolgen, müssen Sie zuerst master Kasse und dann die Änderungen ziehen:

Im Submodul Verzeichnis:

git checkout master 
git pull origin master 
+0

Dank freundlich, dass scheint zu funktionieren. Muss ich dieses Update auf jedem Computer durchführen, auf dem dieses Hauptrepo ausgecheckt ist, damit sie den neuesten Submodulcode abrufen können? – eoinoc

+0

Ich habe das gleiche Problem, und es scheint, dass Sie dies für jedes Submodul in jedem ausgecheckten Repo tun müssen. Ich würde gerne eine Lösung finden, bei der ich meinen Master-Repo einfach mit 'git clone --recursive' klonen und dann einfach die Änderungen für jedes Submodul nach Bedarf ziehen und ziehen kann. Weiß jemand, wie man das macht? – Simon

+2

** Just hit me **: Ausführen der beiden Befehle in der Antwort oben nach 'git submodule foreach ' * scheint * den Trick zu tun. Unsicher von möglichen Nebenwirkungen obwohl ... – Simon