Mise à jour Git sous-module de dernier commit sur l'origine

J'ai un projet avec un Git sous-module. C'est à partir de ssh://... URL, et lors de la validation A. Commettre B a été poussé à cette URL, et je veux que le sous-module pour récupérer le commettre, et de changement.

Maintenant, ma compréhension est que git submodule update devrait le faire, mais il ne le fait pas. Il ne fait rien (pas de sortie, le succès le code de sortie). Voici un exemple:

$ mkdir foo
$ cd foo
$ git init .
Initialized empty Git repository in /.../foo/.git/
$ git submodule add ssh://[email protected]/git/mod mod
Cloning into mod...
[email protected]'s password: hunter2
remote: Counting objects: 131, done.
remote: Compressing objects: 100% (115/115), done.
remote: Total 131 (delta 54), reused 0 (delta 0)
Receiving objects: 100% (131/131), 16.16 KiB, done.
Resolving deltas: 100% (54/54), done.
$ git commit -m "Hello world."
[master (root-commit) 565b235] Hello world.
 2 files changed, 4 insertions(+), 0 deletions(-)
 create mode 100644 .gitmodules
 create mode 160000 mod
# At this point, ssh://[email protected]/git/mod changes; submodule needs to change too.
$ git submodule init
Submodule 'mod' (ssh://[email protected]/git/mod) registered for path 'mod'
$ git submodule update
$ git submodule sync
Synchronizing submodule url for 'mod'
$ git submodule update
$ man git-submodule 
$ git submodule update --rebase
$ git submodule update
$ echo $?
0
$ git status
# On branch master
nothing to commit (working directory clean)
$ git submodule update mod
$ ...

J'ai aussi essayé de git fetch mod, ce qui semble faire un fetch (mais ne peut pas, parce que c'est pas en demandant un mot de passe!), mais git log et git show nier l'existence de nouveaux commits. A ce jour, j'ai juste été rm-ing le module et de le rajouter, mais c'est à la fois faux en principe et fastidieux dans la pratique.

  • David Z de la réponse semble être la meilleure façon de faire cela maintenant que Git a les fonctionnalités dont vous avez besoin via le --remote option, il serait peut-être utile de marquer que l'on a accepté de répondre plutôt que de le "à la main" approche de Jason réponse?
  • Je suis acceptant fortement avec @MarkAmery. Alors que Jason a donné une solution de travail, il n'est pas prévu de le faire, car il laisse la sous-module de commettre pointeur au mauvais commettre identificateur. La nouvelle --remote est définitivement une meilleure solution à ce point dans le temps, et depuis que cette question a été liée à partir d'un Github Gist sur les submodules, je pense qu'il serait mieux pour la réception des lecteurs de voir la nouvelle réponse.
InformationsquelleAutor Thanatos | 2011-04-29