1141 Stimmen

Git-Submodul auf die letzte Übergabe auf Origin aktualisieren

Ich habe ein Projekt mit einem Git-Submodul. Es ist von einer ssh://... URL und befindet sich auf Commit A. Commit B wurde zu dieser URL gepusht, und ich möchte, dass das Submodul den Commit abruft und zu ihm wechselt.

Ich gehe davon aus, dass git submodule update sollte dies tun, tut es aber nicht. Es tut sich nichts (keine Ausgabe, kein Erfolgs-Exit-Code). Hier ist ein Beispiel:

$ mkdir foo
$ cd foo
$ git init .
Initialized empty Git repository in /.../foo/.git/
$ git submodule add ssh://user@host/git/mod mod
Cloning into mod...
user@host'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://user@host/git/mod changes; submodule needs to change too.
$ git submodule init
Submodule 'mod' (ssh://user@host/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
$ ...

Ich habe auch versucht git fetch mod , das scheinbar einen Fetch durchführt (was aber nicht möglich ist, da es nicht nach einem Passwort fragt), aber git log y git show die Existenz neuer Commits leugnen. Bis jetzt habe ich nur rm -Modul zu entfernen und neu hinzuzufügen, aber das ist sowohl im Prinzip falsch als auch in der Praxis mühsam.

2voto

Oleg Kokorin Punkte 1668

Die einfachste Art, Git-Projekte zu verwalten, die Submodule ist es, immer hinzuzufügen

--recurse-submodules 

am Ende eines jeden Git-Befehls Beispiel:

git fetch --recurse-submodules

eine andere

git pull --update --recurse-submodules

usw...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X