Ten artykuł opisuje to stosunkowo dobrze:
https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown
Zasadniczo, jeśli pracujesz z wiersza poleceń, jest to prostsze niż mogłoby się wydawać. Załóżmy, że chcesz 2 repozytoria git:
.gitone
.gittwo
Możesz je skonfigurować tak:
git init .
mv .git .gitone
git init .
mv .git .gittwo
Możesz dodać plik i zatwierdzić go tylko do jednego w ten sposób:
git --git-dir=.gitone add test.txt
git --git-dir=.gitone commit -m "Test"
Zatem najpierw są opcje dla git, potem polecenie, a na końcu opcje polecenia git. Możesz łatwo aliasować polecenie git, takie jak:
#!/bin/sh
alias gitone='git --git-dir=.gitone'
alias gittwo='git --git-dir=.gittwo'
Możesz więc zobowiązać się do jednego lub drugiego, nieco mniej wpisując, na przykład gitone commit -m "blah"
.
To, co wydaje się być trudniejsze, jest ignorowane. Ponieważ .gitignore zwykle znajduje się w katalogu głównym projektu, musiałbyś znaleźć sposób na zmianę tego również bez przełączania całego katalogu głównego. Lub możesz użyć .git / info / exclude, ale wszystkie ignorowania, które następnie wykonujesz, nie zostaną zatwierdzone ani przesunięte - co może zepsuć innych użytkowników. Inni używający któregokolwiek repozytorium mogą wypchnąć plik .gitignore, co może powodować konflikty. Nie jest dla mnie jasne, jak najlepiej rozwiązać te problemy.
Jeśli wolisz narzędzia GUI, takie jak TortoiseGit, będziesz miał również pewne wyzwania. Możesz napisać mały skrypt, który tymczasowo zmienia nazwę .gitone lub .gittwo na .git, aby spełnić założenia tych narzędzi.
git subtree
wykona pracę.