Destio небольшой блог

   

Git, вложенные репозитарии без submodules

Если Гит увидит в папке папку .git, то он игнорирует и папку, и все что в ней. Для работы с вложенными репозитариями предполагается использовать submodules. Это не самая простая вещь, и иногда просто хочется, чтобы папка была сразу и во вложенном репозитарии, и в большом, внешнем, без возни с подмодулями. Примерно то же можно сказать и про поддеревья (subtrees).

Еще одна закавыка со вложенными репозитариями: вложенные .gitignore. Гит будет их радостно использовать, а кроме того они имеют приоритет над корневым gitignore.

Обойти обе проблемы можно простым и некрасивым способом: переименовывать и .git, и .gitignore перед коммитом и возвращать их обратно. Простой баш-скрипт для этого выглядит так:

mv ~/www/site/.git ~/www/site/.2git
mv ~/www/site/.gitignore ~/www/site/.2gitignore
git add .
git commit -m "new backup"
mv ~/www/site/.2git ~/www/site/.git
mv ~/www/site/.2gitignore ~/www/site/.gitignore

Ближайшие сообщения

Похожие сообщения

Ответить