Возникла потребность один и тот же проект заливать на гитхаб и на боевой сервер. Вся сложность была в том, что в каждом из случаев файлик .gitignore
разный. Вы скажете, что можно было бы держать изменения в разных ветках и иметь свой файл игноров в каждой ветке? Но по мне это доабвляет только неразберихи. Надо помнить с какой веткой ты сейчас работаешь + сама папка с гитом начинает много весить, т.к. в ней хранятся «лишние данные». В итоге родился несложный алгоритм, решающий эту проблему. 1.init .git twice
$ git init --separate-git-dir=src.git $ rm .git $ git init --separate-git-dir=prd.git $ rm .git 2.prepare aliases
$ touch deploy.sh $ nano deploy.sh 3.paste that to deploy.sh
#!/bin/sh alias prd='git --git-dir=prd.git' alias src='git --git-dir=src.git' 4.run deploy.sh
$ source deploy.sh 5.specify local individual .gitignores
$ src config --add core.excludesfile src.gitignore $ prd config --add core.excludesfile prd.gitignore 6.profit
Спасибо! Я с подобной задачей бился (несколько репозиториев пакетов в корне сайта), но так и не победил. Делал на симлинках, но они тут не спасают. А вот это все очень похоже на рабочий вариант.
Единственное, что тут надо отметить, не получится выполнить git clone
репозитория, у которого отсутствует алиас на нужную директорию в .git
(в первом пункте примера мы сносим этот алиас). Можно предложить 2 варианта решения: либо указывать для репозитория, который нужен сейчас, алиас в .git
, либо залить такой репозиторий на какое-нибудь гитохранилище и уже оттуда клонировать. Думается, что второй вариант предпочтительнее. Меньше мороки.
либо залить такой репозиторий на какое-нибудь гитохранилище и уже оттуда клонировать Можно и локально еще один проект локально сделать и добавить дополнительный remote