Est-il possible d'avoir 2 dépôts git dans un même répertoire ? Je pense que non, mais j'ai pensé poser la question. En gros, j'aimerais vérifier dans mon répertoire personnel les fichiers de configuration (par exemple .emacs) qui devraient être communs à toutes les machines sur lesquelles je travaille, mais avoir un second dépôt pour les fichiers locaux (par exemple .emacs.local), qui contient des configurations spécifiques à la machine. Le seul moyen auquel je pense pour faire cela est d'avoir la configuration locale dans un sous-répertoire et d'ignorer ce sous-répertoire du dépôt git principal. D'autres idées ?
Réponses
Trop de publicités?Ma méthode préférée est d'utiliser un repo dans un sous-dossier, et d'utiliser des liens symboliques récursifs :
git clone repo1
cd somerepo
git clone repo2
cd repo2
./build
où les ' repo/build Le fichier '-file' se présente comme suit :
#!/bin/bash
SELF_PATH="$(dirname "$(readlink -f "$0")" )" # get current dir
cd .. && git stash && git clean -f -d '' # remove previous symlinks
cp -sR "$SELF_PATH"/* ../. # create recursive symlinks in root
prudence : ne pas utiliser 'git add .'
L'autre option consiste à les placer dans des dossiers distincts et à créer des liens symboliques d'un dossier à l'autre.
Par exemple, s'il existe des référentiels :
- Repo1/DossierA
- Repo1/DossierB
Et.. :
- Repo2/DossierC
Vous pouvez établir un lien symbolique entre les dossiers FolderA
y FolderB
de la Repo1 vers la Repo2. Pour Windows, la commande à exécuter sur la Repo1 serait la suivante :
User@Repo1$ mklink /J FullPath/Repo2/FolderA FullPath/Repo1/FolderA
User@Repo1$ mklink /J FullPath/Repo2/FolderB FullPath/Repo1/FolderB
User@Repo1$ printf "/FolderA/*\n/FolderB/*\n" >> .gitignore
Pour les fichiers sur les dépôts principaux, vous devrez établir un lien symbolique pour chacun d'entre eux, en les ajoutant également au dépôt. .gitignore
pour éviter le bruit, à moins que vous ne le souhaitiez.
Avertissement : Ceci n'est pas de la publicité. Je suis le développeur de la bibliothèque fournie.
J'ai créé une extension git pour gérer les cas où vous voulez mélanger plusieurs dépôts dans un seul dossier. L'avantage de cette librairie est de garder une trace des dépôts et des conflits de fichiers. Vous pouvez la trouver sur github . Il y a également 2 dépôts d'exemples pour l'essayer.
L'OP souhaite fusionner les fichiers de plusieurs dépôts dans un seul répertoire.
Mais si vous ne voulez pas de fusion et que vous avez plutôt besoin de passer d'un dépôt à l'autre dans un seul répertoire :
mkdir repo
cd repo
git init
git remote add first https://first/repo.git
git remote add second https://second/repo.git
git fetch first
git fetch second
git checkout first/master -b master
Vous pouvez désormais passer d'un répertoire à l'autre et même sélectionner les commits entre les dépôts.
- Réponses précédentes
- Plus de réponses