Несколько `.git` в одном проекте
May 19, 2016
Возникла потребность один и тот же проект заливать на гитхаб и на боевой сервер. Вся сложность была в том, что в каждом из случаев файлик .gitignore разный. Вы скажете, что можно было бы держать изменения в разных ветках и иметь свой файл игноров в каждой ветке? Но по мне это добавляет только неразберихи. Надо помнить с какой веткой ты сейчас работаешь + сама папка с гитом начинает много весить, т.к. в ней хранятся «лишние данные».
В итоге родился несложный алгоритм, решающий эту проблему.
- init .git twice
$ git init --separate-git-dir=src.git
$ rm .git
$ git init --separate-git-dir=prd.git
$ rm .git
- prepare aliases
$ touch deploy.sh
$ nano deploy.sh
- paste that to deploy.sh
#!/bin/sh
alias prd='git --git-dir=prd.git'
alias src='git --git-dir=src.git'
- run deploy.sh
$ source deploy.sh
- specify local individual .gitignores
$ src config --add core.excludesfile src.gitignore
$ prd config --add core.excludesfile prd.gitignore
- profit