Это можно исправить без принудительного толчка, переустановив целевую ветвь в текущую локальную ветвь, переключившись на целевую ветку, а затем переустановив локальную ветку в целевую. Это не расходится, так как коммиты, которые могут отсутствовать, добавляются и их больше не нужно создавать. Пример для более простого объяснения:
- основная ветка - развитие
- Вы проверяете новую функцию ветки / Making_stuff
- Член команды подталкивает к разработке нового обязательства
Если вы НЕ обновляли свою ветку разработки, то «git checkout develop» && «git rebase feature / doing_stuff» будет работать правильно, поскольку с момента оформления заказа не было добавлено никаких коммитов. Однако, если вы проверили разработку и сняли новую фиксацию, вы увидите это расхождение, если попытаетесь выполнить перебазирование из-за появления новой фиксации. Простое исправление без принудительного нажатия (обычно не очень хорошая идея в командной среде):
- функция проверки git / do_stuff
- git rebase разработать
- git checkout разработать
- git функция перебазирования / do_stuff
Перебазирование с шага 2 переносит недостающую фиксацию в функцию / Making_stuff, поэтому, когда наступает шаг 4, она актуальна и не требует создания новой фиксации для изменения.
Это решение, которое я знаю, работает, потому что я только что столкнулся с этим и выполнил описанные выше шаги, чтобы успешно протолкнуть разработку без принуждения. Я работаю в команде из более чем 50 разработчиков, поэтому мне запрещено принудительно запускать что-либо, кроме моих собственных веток тестирования, поэтому мне пришлось найти решение.