Учитывая репо Foo и репо Bar. Я хочу объединить Bar с Foo, но только в отдельную ветку с именем baz.
git checkout -b baz <= поместите сюда репо Bar.
Учитывая репо Foo и репо Bar. Я хочу объединить Bar с Foo, но только в отдельную ветку с именем baz.
git checkout -b baz <= поместите сюда репо Bar.
Ответы:
Вы не можете объединить репозиторий в ветку . Вы можете объединить ветку из другого репозитория с веткой в вашем локальном репозитории. Предполагая, что у вас есть два репозитория, fooи barоба они расположены в вашем текущем каталоге:
$ ls
foo bar
Перейти в fooрепозиторий:
$ cd foo
Добавьте barрепозиторий как удаленный и загрузите его:
$ git remote add bar ../bar
$ git remote update
Создайте новую ветку bazв fooрепозитории на основе вашей текущей ветки:
$ git checkout -b baz
Слить ветку somebranchиз barрепозитория в текущую ветку:
$ git merge --allow-unrelated-histories bar/somebranch
( --allow-unrelated-historiesне требуется до git версии 2.9)
Обновлено с помощью "реальных" команд:
Начните с каталога репо, убедитесь, что ваша рабочая копия чистая (файлы не были изменены, добавлены или удалены).
Создайте новую ветку:
git checkout -b <my-branch>
Добавьте дополнительный пульт, затем загрузите его:
git remote add <repo-name> git@github.com:xxx/<repo-name>.git
git remote update
Объедините одну из их веток в свою текущую ветку:
git merge <repo-name>/<their-branch>
Если вы не знаете, что <their-branch>хотите, выберитеmaster
Если вы уверены, что хотите принять все удаленные изменения и избежать конфликтов ( перезаписать свои ), вы можете указать в -X theirsкачестве опции для git mergeна последнем шаге.
Если вы хотите добавить его в подкаталог, вероятно, вам следует использовать подмодули git
Используя руководство от larsks, я смог сделать это с помощью SourceTree.
--allow-unrelated-historiesв команду git merge.