Слияние git repo в ветвь другого репо
С учетом репо Foo и панели репо. Я хочу объединить Bar с Foo, но только в отдельную ветвь, называемую baz
.
git checkout -b baz
<= введите здесь репо бар.
Ответы
Ответ 1
Вы не можете объединить хранилище с веткой. Вы можете объединить ветку из другого хранилища в ветку в вашем локальном хранилище. Предполагая, что у вас есть два репозитория, 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)
Ответ 2
Обновлено с помощью "реальных" команд:
Начните с вашего репозитория, убедитесь, что ваша рабочая копия чистая (файлы не изменены, добавлены или удалены).
Создайте новую ветку:
git checkout -b <my-branch>
Добавьте вторичный пульт, затем извлеките его:
git remote add <repo-name> [email protected]:xxx/<repo-name>.git
git remote update
Объедините одну из их веток в вашу текущую ветку:
git merge <repo-name>/<their-branch>
Если вы не знаете, какое <their-branch>
вы хотите, тогда <their-branch>
к master
Если вы уверены, что хотите принять все удаленные изменения и избежать конфликтов (перезаписать свои), то вы можете указать -X theirs
как вариант для git merge
на последнем шаге.
Если вы хотите добавить его в подкаталог, то, вероятно, вам следует использовать подмодули git.
Ответ 3
Используя руководство от жаворонков, я смог сделать это с помощью SourceTree.
- Создан филиал в хранилище назначения
- Добавил исходный репозиторий как удаленный, нажав кнопку "Настройки" и добавив исходный репозиторий.
- Ветви из обоих репозиториев теперь отображаются в списке веток. Я использовал инструмент слияния, чтобы объединить ветку из исходного репозитория в мою новую целевую ветку репозитория.
- Решены любые конфликты с использованием SourceTree или моей IDE
- Зафиксируйте изменения в моей ветке.
- Удалите исходный репозиторий из удаленного списка с помощью кнопки "Настройки".