git: как объединить коммиты с удаленного на другой путь? - PullRequest
6 голосов
/ 05 ноября 2008

У меня есть git-репозиторий с удаленным foo.

foo - это веб-приложение, которое содержит некоторые файлы и директории прямо в своем корне:

Rakefile
app
...
public
script

Мой основной репозиторий git - это более крупная система, которая включает это веб-приложение. Я хочу получить коммиты из foo, но мне нужно, чтобы файлы находились в директории web. Таким образом, они должны стать web/app, web/public и т. Д.

Я не хочу использовать foo в качестве подмодуля. Я хочу слить foo в основной репозиторий, а затем избавиться от него.

Ответы [ 3 ]

4 голосов
/ 05 ноября 2008
2 голосов
/ 03 сентября 2012

Современные ресурсы для объединения поддеревьев :

Цитировать с Как использовать стратегию слияния поддеревьев :

В этом примере предположим, что у вас есть хранилище по адресу /path/to/B (но, если хотите, это может быть и URL) Вы хотите объединить главную ветвь этого хранилища с подкаталогом dir-B в вашей текущей ветке.

Вот последовательность команд, которая вам нужна:

$ git remote add -f Bproject /path/to/B
$ git merge -s ours --no-commit Bproject/master
$ git read-tree --prefix=dir-B/ -u Bproject/master
$ git commit -m "Merge B project as our subdirectory"

$ git pull -s subtree Bproject master

См. Также комментарии к статье " Поддерево сливается и вы ".

1 голос
/ 06 ноября 2008

Вот вариант вашего ответа в вики-сообществе, если вы хотите принять его как ответ.


Это отвечает на мой вопрос:

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

...