Получить коммит git-репозитория в другую ветку git-repository

275
Strongground

Рассмотрим следующую настройку: один репозиторий1 находится на Bitbucket. Локальная рабочая копия находится на моей машине. Я изменяю файлы локально, фиксирую и отправляю в Repository1.

Изменения в Repository1 (на Bitbucket) (в ветке "master"), где сделаны только мной. Теперь мне нужно получить некоторые из них в ветке «feature» другого Repository2, который также находится на Bitbucket.

Однако содержимое Repository2 является более новым, изменения, внесенные удаленной командой, не отражаются ни в Repository1, ни в моей рабочей копии. Repository2 содержит также больше файлов, где мой Repository1 содержит только небольшую его часть.

В конце я хочу объединить некоторые изменения в Repository1 (ветвь «master») с более новыми файлами в Repository2 (ветвь «feature»).

Однако единственное решение, которое я знаю, это не практично: сортируйте мои измененные файлы и вручную объединяйте их и объединяйте, а затем копируйте их в мою локальную рабочую копию Repository2, делая коммит и push впоследствии.

Есть ли другой метод? Желательно что-то, что включает в себя авто-слияние, где это возможно.

Заранее спасибо!

2

1 ответ на вопрос

0
benjifisher

Ваш вопрос состоит из двух частей: как управлять несколькими репозиториями и как выполнить слияние.

Есть ли причина, по которой у вас есть два отдельных репозитория в BitBucket, а не один репозиторий с несколькими ветвями? Предполагая, что есть веская причина, вы все равно можете использовать свой локальный репозиторий для синхронизации с двумя различными пультами, что-то вроде

$ git fetch repo1 branch:master $ git fetch repo2 branch:feature 

Это создаст локальную ветку master и feature, даже если ветви в удаленных репозиториях имеют одинаковые имена. Сделав все, что вам нужно сделать с этими ветвями, вы можете использовать аналогичный синтаксис:

$ git push repo1 master:branch $ git push repo2 feature:branch 

Получив локальные копии веток, вы сможете объединить свои изменения с

$ git checkout feature $ git merge master 

Если есть конфликты, лучше разрешить их вручную, но если вы уверены, что мастер прав, вы можете добавить -s theirsопцию в mergeкоманду.

Мне удалось скопировать одно изменение через патч. Однако делать это регулярно не представляется возможным. Я попробую ваше решение сегодня. Strongground 10 лет назад 0