Ця стаття висвітлює це відносно добре:
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, щоб виконувались припущення цих інструментів.
git subtree
виконає роботу.