2015-03-22 2 views
2

Я новичок git, поэтому мне может быть что-то неявное.Обменная часть git repo

У меня есть локальный GIT репозиторий в таком виде

/.git 
/Project-1/ 
/Project-2/ 
/Project-3/ 
/Project-4/ 
... 
/Project-x/ 
... 
/Project-y/ 
.... 
/Shared-Code/ 

Каждый проект представляет собой плагин для программы хоста. Разработчики этой программы хотят включить 2 моих плагина в выпуск своего продукта. С этой целью они предоставили репозиторий github для размещения моего кода. Проблема в том, что я хочу только загрузить/Project-x,/Project-y и/Shared-Code.

Я смотрел здесь и в другом месте. Самое близкое, что я мог найти, предположил, что у меня действительно должно быть 2 РЕПО. Я не против иметь 2 РЕПО. Мне все равно, сохраняют ли они те же истории изменений, хотя было бы неплохо, если бы они это сделали.

Я мог бы легко скопировать/Project-x,/Project-y и/Shared-Code в новое место и создать новое репо. Мой вопрос: лучше ли мне копировать или использовать символические ссылки? Или есть более «git» способ сделать это?

+0

Способ git состоит в том, чтобы иметь несколько репозиций, каждый из которых имеет один проект. вы можете иметь суперрепозиторий, содержащий другие репозитории, например, с использованием подмодулей git. –

+0

Звучит интересно. Таким образом, общий код будет отдельным репо? У вас есть предложение, как я могу сохранить свою историю изменений, если я перейду в отдельные репозитории? – rpatters1

+0

Я бы поместил общий код в какую-то библиотеку, которую я бы использовал в отдельном репозитории git. этот git-репо затем может быть включен в репозитории приложений, например, с использованием git-подмодуля. Если вы хотите разбить существующий репозиторий на основе каталогов и сохранить историю, вам понадобится 'git filter-branch'. Я приглашаю вас искать stackoverflow, есть несколько очень хороших ответов на это. –

ответ

0

Для этого вы можете использовать git submodules.

Конечно, вы также можете создать .gitignores, игнорирующие папки для получателей (или вы), блокируя другие папки, как показано в gitignore docs:

Если шаблон заканчивается косой чертой, его удаляется с целью последующего описания, но он будет находить совпадение с каталогом. Другими словами, foo/будет соответствовать каталогу foo и paths под ним, но не будет соответствовать регулярному файлу или символической ссылке foo (это согласуется с тем, как pathspec работает вообще в Git).

+0

Я прочитал документы о подмодулях git, но я не мог точно сказать, как я буду получать из моего текущего формата использование подмодулей. Кажется, я хочу идти в противоположном направлении. Потому что я новичок, мне действительно нужен ELI5. – rpatters1

Смежные вопросы