Questo articolo copre questo aspetto relativamente bene:
https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown
Fondamentalmente, se stai lavorando dalla riga di comando, è più semplice di quanto potresti immaginare. Supponiamo che tu voglia 2 repository git:
.gitone
.gittwo
Potresti impostarli in questo modo:
git init .
mv .git .gitone
git init .
mv .git .gittwo
Puoi aggiungere un file e inviarlo a uno solo in questo modo:
git --git-dir=.gitone add test.txt
git --git-dir=.gitone commit -m "Test"
Quindi vengono prima le opzioni per git, poi il comando, quindi le opzioni del comando git. Potresti facilmente alias un comando git come:
#!/bin/sh
alias gitone='git --git-dir=.gitone'
alias gittwo='git --git-dir=.gittwo'
Quindi puoi impegnarti per l'uno o l'altro digitando un po 'meno, come gitone commit -m "blah"
.
Ciò che sembra essere più complicato viene ignorato. Poiché .gitignore normalmente si trova nella root del progetto, dovresti trovare un modo per cambiare anche questo senza cambiare l'intera root. Oppure, potresti usare .git / info / exclude, ma tutte le ignorazioni che esegui non verranno salvate o spinte, il che potrebbe rovinare altri utenti. Altri che utilizzano uno dei repository potrebbero inviare un file .gitignore, che potrebbe causare conflitti. Non mi è chiaro il modo migliore per risolvere questi problemi.
Se preferisci strumenti GUI come TortoiseGit avresti anche alcune sfide. Potresti scrivere un piccolo script che rinomina temporaneamente .gitone o .gittwo in .git in modo che i presupposti di questi strumenti siano soddisfatti.
git subtree
porterà a termine il lavoro.