Modification d'un sous-module git

Est-ce possible? Imaginez que j'ai des projets Parent & enfant. Les deux sont git repository. Enfant est un sous-module de Parent.

Puis-je apporter des modifications à la version de Child qui se trouve dans Parent & commit et les pousser comme un référentiel régulier?

Ou Ai-je besoin d'un clone séparé de Child quelque part auquel j'apporte des modifications?

Merci.

24
demandé sur Christopher Stott 2011-03-25 03:57:26

2 réponses

Vous n'avez pas besoin d'un clone séparé. Le dossier du sous-module est un monde à part. Il suffit d'éditer, de valider, de brancher et de pousser au plus grand plaisir de votre cœur.

Git est génial de cette façon. :-)

BTW, le référentiel parent détectera même quand des changements se produisent dans le dossier du sous-module et vous proposera de valider l'état actuel du sous-module comme nouveau point de référence officiel pour les clones du repo parent.

Remarque Importante:

Assurez-vous que vous faites git checkout master (ou certains autre branche) dans le dossier du sous-module avant le début du piratage.

Ensuite, assurez-vous également lorsque vous validez l'état mis à jour du sous-module, que vous push ces commits dans un repo public, ou au moins que vous ne rebasez pas ou ne modifiez pas l'historique dans le sous - module par la suite-car cela corromprait la référence du parent à l'historique du sous-module.

Faites attention. (Pointe du chapeau à @ pjmorse pour le rappel.)

Ligne de fond:

Oui. Développer dans un dossier de sous-module est possible et souvent pratique mais pas sans risques. Choisissez judicieusement votre modèle de développement

31
répondu Már Örlygsson 2017-05-23 10:30:04

Selon la documentation :

Si vous souhaitez effectuer une modification dans un sous-module, vous devez d'abord extraire une branche, effectuer vos modifications, publier la modification dans le sous-module, puis mettre à jour le superprojet pour référencer le nouveau commit.

Aussi près que je sache, si vous travaillez sur la branche où le sous-module a été ajouté, vous pouvez éditer Child et repousser vers son référentiel. Mais si vous n'êtes pas le développeur qui a ajouté L'enfant au Parent, vous êtes travailler avec une tête détachée et devra soit vérifier une version séparée de Child pour apporter des modifications, soit apporter les modifications et exporter les correctifs (en utilisant git format-patch) pour quelqu'un d'autre à valider (via git am).

4
répondu pjmorse 2011-03-25 01:08:09