Este artículo cubre esto relativamente bien:
https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown
Básicamente, si está trabajando desde la línea de comandos, esto es más simple de lo que imagina. Suponga que quiere 2 repositorios de git:
.gitone
.gittwo
Podrías configurarlos así:
git init .
mv .git .gitone
git init .
mv .git .gittwo
Puede agregar un archivo y enviarlo solo a uno así:
git --git-dir=.gitone add test.txt
git --git-dir=.gitone commit -m "Test"
Entonces, las opciones para git vienen primero, luego el comando, luego las opciones del comando git. Fácilmente podría alias un comando git como:
#!/bin/sh
alias gitone='git --git-dir=.gitone'
alias gittwo='git --git-dir=.gittwo'
Así que puedes comprometerte con uno u otro escribiendo un poco menos, como gitone commit -m "blah"
.
Lo que parece volverse más complicado es ignorarlo. Dado que .gitignore normalmente se encuentra en la raíz del proyecto, también necesitaría encontrar una manera de cambiar esto sin cambiar la raíz completa. O bien, puede usar .git / info / exclude, pero todas las ignoraciones que realice no se confirmarán ni presionarán, lo que podría arruinar a otros usuarios. Otros que usan cualquiera de los repositorios pueden enviar un .gitignore, lo que puede causar conflictos. No tengo claro cuál es la mejor manera de resolver estos problemas.
Si prefiere herramientas GUI como TortoiseGit, también tendrá algunos desafíos. Puede escribir un pequeño script que cambie el nombre de .gitone o .gittwo a .git temporalmente para que se cumplan las suposiciones de estas herramientas.
git subtree
hará el trabajo.