Cet article couvre cela relativement bien:
https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown
Fondamentalement, si vous travaillez à partir de la ligne de commande, c'est plus simple que vous ne le pensez. Supposons que vous vouliez 2 dépôts git:
.gitone
.gittwo
Vous pouvez les configurer comme ceci:
git init .
mv .git .gitone
git init .
mv .git .gittwo
Vous pouvez ajouter un fichier et le valider dans un seul comme ceci:
git --git-dir=.gitone add test.txt
git --git-dir=.gitone commit -m "Test"
Ainsi, les options pour git viennent en premier, puis la commande, puis les options de la commande git. Vous pouvez facilement aliaser une commande git comme:
#!/bin/sh
alias gitone='git --git-dir=.gitone'
alias gittwo='git --git-dir=.gittwo'
Vous pouvez donc vous engager dans l'un ou l'autre avec un peu moins de frappe, comme gitone commit -m "blah"
.
Ce qui semble devenir plus délicat est ignoré. Étant donné que .gitignore se trouve normalement à la racine du projet, vous devez également trouver un moyen de changer cela sans changer la racine entière. Ou, vous pouvez utiliser .git / info / exclude, mais tous les ignorés que vous effectuez alors ne seront pas validés ou poussés - ce qui pourrait gâcher d'autres utilisateurs. D'autres utilisant l'un ou l'autre des référentiels peuvent pousser un .gitignore, ce qui peut provoquer des conflits. La meilleure façon de résoudre ces problèmes n'est pas claire pour moi.
Si vous préférez les outils GUI comme TortoiseGit, vous aurez également des défis. Vous pouvez écrire un petit script qui renomme temporairement .gitone ou .gittwo en .git afin que les hypothèses de ces outils soient satisfaites.
git subtree
fera le travail.