2017-03-08 1 views
0

Je souhaite exécuter une mise à jour de sous-module depuis l'extérieur de mon projet git. Pour la plupart des commandes (par exemple git status), je peux donner git --git-dir et --work-tree arguments, comme ceci:Mise à jour du sous-module git à partir du répertoire différent

git --git-dir=/path/to/root/.git --work-tree=/path/to/root status

Toutefois, l'exécution git --git-dir=/path/to/root/.git --work-tree=/path/to/root submodule update donne le résultat: fatal: $program_name cannot be used without a working tree.

Je suis conscient que je peux changer en le répertoire /path/to/root, cependant je voudrais savoir si git a la possibilité de mettre à jour des sous-modules depuis l'extérieur du projet git.

Répondre

0

j'ai pu exécuter une commande git à partir du sous-module en dehors du dépôt principal en faisant git --git-dir=<path-to-repo>\.git\modules\<submodule-name>

En effet, un répertoire git sous-modules se trouve au dossier .git\modules\<submodule-name>, pas à l'intérieur du sous-module lui-même (SAUF SI vous avez créé votre sous-module au-dessus d'un référentiel existant en premier lieu, auquel cas vous pouvez exécuter git submodule absorbgitdirs pour résoudre ce problème). Notez qu'à partir d'un nouveau clone, le dossier .git\modules\<submodule-name> n'existera pas tant que vous n'aurez pas exécuté git submodule update pour la première fois.

Cependant, j'ai rencontré le même problème que vous lorsque vous essayez d'exécuter git submodule update en utilisant un --git-dir du référentiel principal. Cela n'a pas fonctionné avec et sans spécifier un arbre de travail. Je me demande si c'est un bug ou si nous faisons quelque chose de mal.

Cependant, parce que la première commande que j'ai lié travaillé, vous pouvez simplement faire ce qui suit:

git --git-dir=<path-to-repo>\.git\modules\<submodule-name> pull

qui se déroulera git pull dans votre sous-module de l'extérieur du dépôt principal.