ГИТ: есть разные.gitignore файл для каждого удаленного
У меня есть удаленное РЕПО, в котором я хочу зафиксировать определенные файлы (скомпилированные файлы для их развертывания на платформе облачных вычислений), но я не хочу развертывать их на github...
есть ли какой-то способ, чтобы получить различные .файлы gitignore, по одному для каждого пульта?
4 ответов:
Это действительно не имеет смысла в модели git. Коммиты содержат наборы файлов; все .гитюдного файлы сделать, это сказать пользовательский интерфейс для автоматического добавления файлов, соответствующих определенной модели. Это фактически означало бы иметь параллельные наборы коммитов, которые почти одинаковы, но содержат только подмножество файлов.
Это можно было бы сделать с помощью схемы ветвления, где у вас есть ветвь "развертывания", которая отделяется от master и является такой же, но содержит дополнительные скомпилированные файлы. Это может быть даже автоматизировано с помощью Git hooks для автоматической компиляции файлов и добавления их в репо. Я представляю себе такую структуру:
master: A ---> B ---> C ---> D \ \ \ \ \ \ \ \ deployment: -> A' -> B' -> C' -> D'т. е. каждый раз, когда определенный сервер получает новую фиксацию на master, он строит проект, добавляет встроенные файлы в новую фиксацию из D и фиксирует ее в ветке развертывания, которая затем не должна быть перенесена в github.
Я придумал, как это сделать.
в моем случае мне нужно было синхронизировать проект с heroku и github (как публичное РЕПО).
но некоторые файлы с личной информацией не были интересны для совместного использования в публичном репозитории
обычно простой проект будет иметь следующую структуру папок
Project folder (remote heroku) - .git - .gitignore - (folders and files)то, что я сделал, это добавить еще один уровень, и в нем создать еще один репозиторий git, с gitignore, который опустит некоторые файлы из мой проект.
Project public (remote github) - .git - .gitignore - Project folder (remote heroku) - .git - .gitignore - (folders and files)таким образом, это не репозиторий git с двумя удаленными репозиториями с разными gitignores.
есть два разных репозиториев.
на самом внутреннем я исключаю только файлы, созданные IDE и некоторые файлы, созданные во время выполнения.
на самом внешнем уровне я исключаю все файлы, которые не могут быть обнародованы.
другой вариант:git подмодули.
Это может быть полезно, если, например, вы хотите, чтобы ваш код и документация были в двух разных репозиториях с независимым контролем доступа и т. д. Таким образом, у вас будет 3 полных РЕПО, подмодульное РЕПО для документов, другое для кода и "мастер" (не подмодуль git) РЕПО, содержащее оба (для загрузки pypi, возможно). Это достойный способ организовать проект учебника CS. Оба проекта могут весело продвигаться вперед независимо и синхронизироваться вверх по основным выпускам, управляемым главным сопровождающим РЕПО.
An автоматизированное решение к методам, упомянутым здесь:
- настройка корень .git игнорировать подпапку(ы) вы хотите передать по-разному
- Init новый git в подпапке (Ы) и назначить удаленную конфигурацию
- изменить корневую папку .git / hooks / pre-push file to exec git push в этих подпапках на основе входящих аргументов.
Comments