2012-05-22 3 views
0

Вот наши папки git.Как слить подпапку git из другой подпапки?

folder1/ххх/а/б/с

folder2/ууу/а/б/с

В прошлом, мы можем использовать SVN для слияния Folder1/ххх от folder2/yyy.

Можно ли сделать то же самое в Git?

+0

Эти две папки имеют свой собственный репозиторий Git? Они клонированы из центрального хранилища? – GoZoner

+0

нет, есть в том же хранилище Git. – jumperchen

+0

В прошлом они были в том же хранилище SVN? – GoZoner

ответ

1

Простейшим решением было бы установить обе каталоги как подмодули/поддеревья (у них уже есть отдельные хранилища/svn-репозитории, правда?). Тогда вы просто добавить в Folder1 репозиторий отдаленное, который указывает на folder2 хранилище, и вы просто объединить изменения, как это было любой другой удаленный:

# go to folder1 repository 
cd /path/to/folder1repo 
# or `cd folder1` if you are familiar with inline submodule editing caveats 
# add a remote pointing to folder2 repo 
git remote add folder2 /path/to/repo/folder2 
# fetch it 
git fetch folder2 
# merge folder2 into folder1 
git merge folder2/master 

Единственный нюанс в том, что вы на самом деле есть подмодуль, и вы должны взять на себя обязательство суперпроект каждый раз, когда вы объединяете эти папки (так как, скажем, folder1 изменится и суперпроект должны указывать на разные фиксации):

cd /path/to/superproject 
git add folder1 
git commit -m "Merged folder2 submodule into folder1" 

в качестве альтернативы подмодуль можно использовать поддерево слияние РЕПО обоих forlders', установка немного сложнее, но тогда вы просто пытаетесь обновить все такие поддеревья :)

Вот хороший учебник поддерево: http://nuclearsquid.com/writings/subtree-merging-and-you/

BTW. Вы можете создать удаленный проект с совершенно другим проектом, и вы можете объединить его код с помощью простого слияния :). Использование сценариев использования git бесконечно :)

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