web-dev-qa-db-fra.com

Comment lier un dossier d'un dépôt Git à un autre dépôt?

Je souhaite créer un référentiel public pour mettre des exemples de fichiers de mon référentiel principal (privé). Existe-t-il un moyen de lier en douceur quelques dossiers d’un dépôt Git à un autre dépôt Git?

28
Manoj

Ensuite, vous devez utiliser des sous-modules pour cette tâche.

Les sous-modules sont différents référentiels git sous la même racine.
Ainsi, vous pouvez gérer 2 projets différents au niveau du dossier dans le référentiel racine.

Submodules permet aux référentiels étrangers de être intégré à un sous-répertoire dédié de l’arbre source, toujours dirigé vers un commit particulier.


git submodule

Divisez votre gros projet en sous-projets comme vous l'avez fait jusqu'à présent.
Ajoutez maintenant chaque sous-projet à votre projet principal en utilisant:

git submodule add <url>

Une fois le projet ajouté à votre référentiel, vous devez l'initialiser et le mettre à jour.

git submodule init
git submodule update

À partir de Git 1.8.2 nouvelle option --remote était ajouté

git submodule update --remote --merge

va fetch les dernières modifications apportées en amont dans chaque sous-module, merge them in, et check out la dernière révision du sous-module.

Comme la documentation le décrire:

--remote

Cette option n'est valide que pour la commande de mise à jour. Au lieu d'utiliser le SHA-1 enregistré du superprojet pour mettre à jour le sous-module, utilisez le statut de la branche de suivi à distance du sous-module.

Cela équivaut à lancer git pull dans chaque sous-module.


Cependant, comment pourrais-je pousser un commit dans le scénario de correction de bogue en C qui affecte le code partagé avec les couches parentes?

Encore une fois: utiliser le sous-module placera votre code dans votre projet principal dans le cadre de son contenu. La différence entre le placer localement dans le dossier et le faire partie d'un sous-module réside dans le fait que dans le sous-module, le contenu est géré (validé) dans un autre référentiel autonome.


Ceci est une illustration du sous-module - projet dans un autre projet dans lequel chaque projet est un projet autonome.

enter image description here


git subtree

Le sous-arbre Git vous permet d'insérer n'importe quel référentiel en tant que sous-répertoire d'un autre

Très similaire à submodule mais la différence principale réside dans l'emplacement de gestion de votre code. Dans les sous-modules, le contenu est placé dans un référentiel séparé et y est géré, ce qui vous permet également de le cloner vers de nombreux autres référentiels.

subtree gère le contenu dans le cadre du projet racine et non dans un projet séparé.

Au lieu de noter comment l’installer et comprendre comment l’utiliser, vous pouvez simplement lire cet excellent article qui vous expliquera tout.

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/

56
CodeWizard