Эта статья описывает это относительно хорошо:
https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown
В основном, если вы работаете из командной строки, это проще, чем вы думаете. Предположим, вы хотите 2 репозитория git:
.gitone
.gittwo
Вы можете настроить их так:
git init .
mv .git .gitone
git init .
mv .git .gittwo
Вы можете добавить файл и зафиксировать его только в одном файле:
git --git-dir=.gitone add test.txt
git --git-dir=.gitone commit -m "Test"
Итак, сначала идут параметры для git, затем команда, а затем параметры команды git. Вы можете достаточно легко использовать псевдоним команды git, например:
#!/bin/sh
alias gitone='git --git-dir=.gitone'
alias gittwo='git --git-dir=.gittwo'
Таким образом, вы можете зафиксировать один или другой, набрав немного меньше текста, например gitone commit -m "blah"
.
Что кажется хитрее, так это игнорирование. Так как .gitignore обычно находится в корне проекта, вам нужно найти способ переключить это без переключения всего корня. Или вы можете использовать .git / info / exclude, но все игнорируемые вами действия не будут зафиксированы или отправлены, что может испортить других пользователей. Другие, использующие любое из репо, могут выдвинуть .gitignore, что может вызвать конфликты. Мне не ясен лучший способ решить эти проблемы.
Если вы предпочитаете инструменты с графическим интерфейсом, такие как TortoiseGit, у вас также могут возникнуть проблемы. Вы можете написать небольшой скрипт, который временно переименует .gitone или .gittwo в .git, чтобы эти предположения были выполнены.