Недавно у меня был вопрос о настройке разработки для нескольких компьютеров git, и решение, которое я получил там, решило мою ситуацию с ветвью master
, но не боковые ветки, основанные от мастера.
Здесь моя текущая настройка:
A--B--C--D master
\
E--F--G--H BUG_37
BUG_37
- это ветвь, которая разрабатывает исправление для необязательной отслеживаемой ошибки для запроса функции в системе и в конечном итоге будет объединена с главной строкой, но пока является отдельной. В репозитории в этом состоянии, на одной машине, я внес некоторые изменения в ветвь master
:
A--B--C--D--I--J--K master
\
E--F--G--H BUG_37
Затем я пересобил ветвь BUG_37
на master
, чтобы убедиться, что она работает как усовершенствование самых текущих изменений:
A--B--C--D--I--J--K master
\
E1--F1--G1--H1 BUG_37
Скажем, что у rebase было несколько конфликтов, которые необходимо было зафиксировать вручную до того, как rebase станет окончательным. Если я вытащил эти изменения в удаленный репозиторий и теперь хочу потянуть изменения на другую систему разработки, у которой есть первоначальная настройка, какой лучший способ сделать это? git pull --rebase
снова запустит rebase, и мне придется вручную пройти через конфликты, которые я прошел в первый раз, не так ли? И если я сделаю небольшую ошибку, повторю конфликты снова, так что E1-H1 немного отличаются в этой новой системе, я получу репозиторий еще больше из-за синхронизации.
Как взять локальный репозиторий в исходном состоянии и удаленный репозиторий в третьем состоянии и обновить локальный репозиторий, чтобы точно соответствовать удаленному репозиторию (trashing меняет EH и перемещает HEAD из BUG_37
в новое местоположение)?