Предположим, что последние коммиты на моем сервере выглядят так:
A1 -> A2 -> A3
Мой локальный репозиторий синхронизирован с сервером, и теперь я создаю ответвление от A3:
A3
|
B1 -> B2 -> B3
Наконец я закончил свою задачу в коммите B3 и хочу отправить на сервер и объединить (PR). Но на сервере кто-то другой добавил новые коммиты:
A1 -> A2 -> A3 -> A4 -> A5
Просматривая A4 и A5, я вижу, что нет конфликта с моей работой над B3, поэтому я хочу объединить свою работу, как будто я ответвился напрямую от A5. Это выглядит действительно распространенной задачей, как правильно это сделать?
решение1
Я понятия не имею, как вы делаете свои pull-запросы. Если A1-A5 и B1-B3 все отправлены на удаленную ветку в каждой ветке, все, что вам нужно сделать, это перейти на ветку A или B, а затем git pull remote origin BRANCH A/B
указать имя. Поскольку вы работали на B, просто сделайте git pull remote origin BRANCH A
while на ветке B. Это даст вам A1-A5 и B1-B3 на той же ветке. Затем используйте ветку B, чтобы создать PR для master.
Альтернативный вариант (правильный, на мой взгляд) — сделать PR для мастера A и PR для мастера B. Наложение A, которое уже есть в B, не должно вызвать никаких проблем.
Если бы A и B вообще не были связаны, вам следовало бы создать ответвление B от вашей ветки develop или эквивалентной ей.
Вот примернелинейная стратегия ветвлениядля более сложных рабочих процессов.
Видя этолинейный и нелинейный рабочий процессможет помочь лучше представить себе происходящий беспорядок.
Если мое объяснение и понимание вашего сценария неверно, дайте мне знать, чтобы я мог изменить или полностью удалить ответ.