Подтвердить что ты не робот

Слияние git repo в ветвь другого репо

С учетом репо Foo и панели репо. Я хочу объединить Bar с Foo, но только в отдельную ветвь, называемую baz.

git checkout -b baz <= введите здесь репо бар.

4b9b3361

Ответ 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.

  1. Создан филиал в хранилище назначения
  2. Добавил исходный репозиторий как удаленный, нажав кнопку "Настройки" и добавив исходный репозиторий.
  3. Ветви из обоих репозиториев теперь отображаются в списке веток. Я использовал инструмент слияния, чтобы объединить ветку из исходного репозитория в мою новую целевую ветку репозитория.
  4. Решены любые конфликты с использованием SourceTree или моей IDE
  5. Зафиксируйте изменения в моей ветке.
  6. Удалите исходный репозиторий из удаленного списка с помощью кнопки "Настройки".