История изменений
Исправление swwwfactory, (текущая версия) :
только я делал для своих нужд так: все, что относится к subtree положить в отдельную папку (как работать в subtree, когда файлы смешаны не пробовал. Но гиту главное указать папку в которой лежит под-дерево. Не стал возиться сделал очевидно - subtree лежит в отдельной папке типа src/my-subtree1)
Начни с этого мануала:
https://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
проверь git subtree (это раньше не входило в гит)
Если его нет в ядре гита, потом поставь и настрой плагин к гиту: https://github.com/apenwarr/git-subtree.git (поищи новое если что, настраивал себе давно - за это время может уже что-то менялось и обещали этот плагин встроить гит (вроде уже встроили))
Далее, если в ядре нет - продолжение: Поставить плагин подразумевается его подключить прямо к гиту (скопировать, если его там нет в /usr/libexec/git-core/git-subtree или куда еще, где видит гит плагины)
Наиболее сложный момент это push обратно в subtree, pull не вызывал особых проблем.
Общий секрет в том, что:
-тренируешься сначала на кошках (советую 3-4 прогнать цикл, пока не освоишься)
-рекомендую использовать локальный (файловый) репозитарий для твоей subtree оригинальной репы. MY-ORIGIN-ST
-push в MY-ORIGIN-ST делать в отдельную ветку, а уж потом там мержишь её с мастером MY-ORIGIN-ST. Иначе будет ругань (устраняемая), но отдельная ветка более безопасна. (Master вообще лучше не трогать без необходимости особой.) Pull в твой subtree не вызывает особых проблем. (Только тоже лучше pull в отдельную ветку, а потом смержишь - так спокойнее)
-Когда тренируешься на локальной репе, да и вообще. Не забудь хотя-бы один коммит сделать уже.
-Когда будешь делать subtree push подстрахуйся резервной копией: есть риск запушить всю репу в репу под-дерева.
Если в git-core уже включили это плагин, то можно поэкспериментировать pull/push/merge/add прямо с ним - но этого кроме push лично сам не пробовал. Все делал как в мануале. Возможно, с встроенным git subtree все проще, но полезно понимать как это делается сначала без всех команд кроме push (этим плагином делал только эту команду)
subtree очень классная штука и стоит освоения. Решает многие проблеммы интеграции и развертывания проектов.
Исходная версия swwwfactory, :
только я делал для своих нужд так: все, что относится к subtree положить в отдельную папку (к работать в subtree, когда файлы смешаны не пробовал. Но гиту главное указать папку в которой лежит под-дерево. Не стал возиться сделал очевидно - subtree лежит в отдельной папке типа src/my-subtree1)
Начни с этого мануала:
https://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
проверь git subtree (это раньше не входило в гит)
Если его нет в ядре гита, потом поставь и настрой плагин к гиту: https://github.com/apenwarr/git-subtree.git (поищи новое если что, настраивал себе давно - за это время может уже что-то менялось и обещали этот плагин встроить гит (вроде уже встроили))
Далее, если в ядре нет - продолжение: Поставить плагин подразумевается его подключить прямо к гиту (скопировать, если его там нет в /usr/libexec/git-core/git-subtree или куда еще, где видит гит плагины)
Наиболее сложный момент это push обратно в subtree, pull не вызывал особых проблем.
Общий секрет в том, что:
-тренируешься сначала на кошках (советую 3-4 прогнать цикл, пока не освоишься)
-рекомендую использовать локальный (файловый) репозитарий для твоей subtree оригинальной репы. MY-ORIGIN-ST
-push в MY-ORIGIN-ST делать в отдельную ветку, а уж потом там мержишь её с мастером MY-ORIGIN-ST. Иначе будет ругань (устраняемая), но отдельная ветка более безопасна. (Master вообще лучше не трогать без необходимости особой.) Pull в твой subtree не вызывает особых проблем. (Только тоже лучше pull в отдельную ветку, а потом смержишь - так спокойнее)
-Когда тренируешься на локальной репе, да и вообще. Не забудь хотя-бы один коммит сделать уже.
-Когда будешь делать subtree push подстрахуйся резервной копией: есть риск запушить всю репу в репу под-дерева.
Если в git-core уже включили это плагин, то можно поэкспериментировать pull/push/merge/add прямо с ним - но этого кроме push лично сам не пробовал. Все делал как в мануале. Возможно, с встроенным git subtree все проще, но полезно понимать как это делается сначала без всех команд кроме push (этим плагином делал только эту команду)
subtree очень классная штука и стоит освоения. Решает многие проблеммы интеграции и развертывания проектов.