Если вы никогда не нажимали на ветку, то вы можете сделать интерактивную перебазировку, чтобы без проблем "раздавить" нежелательные коммиты.Если вы когда-либо выдвигали ветвь, то для выполнения перебазирования вам потребуется «принудительное нажатие» на ветвь, что может быть или не быть проблемой.
Принудительное проталкивание является проблемой, если пульт дистанционного управления настроен наЗапретить это. Вы не сможете ничего с этим поделать, если оно появится.
Принудительное нажатие может быть проблемой, если у других пользователей могут быть копии ветви в их клонах, особенно если они могут основываться на этом.В этом случае вам придется координировать свои действия с другими пользователями, для получения дополнительной информации см. Документацию git rebase
в разделе «восстановление из исходной версии».https://git -scm.com / docs / git-rebase
Так что, если вышеперечисленное не позволяет вам выполнить ребазинг, вы ничего не можете сделать, и вам просто нужно установитьтщеславие «не желая, чтобы люди видели ошибки» в стороне.(Но с другой стороны, если вы когда-либо нажимали на ветку, другие уже могут видеть, что вы сделали в любом случае.)
Так что, если вы хотите продолжить перебазирование:
Предполагая, что вы создалиЕсли вы хотите переместить свою ветку к текущему главному совету (объединяя изменения с master
), или
git rebase -i $(git merge-base master feature) feature
, вы можете сказать
git rebase -i master feature
.
, чтобы сохранить переписанную ветвь на основе того, где уже находится ваша ветвь.
Это вызовет текстовый редактор с «списком TODO», который дает ребазу инструкции.Каждая строка представляет коммит.Для каждого коммита, который вы хотите удалить, найдите коммит в списке, а затем измените первое слово строки СЛЕДУЮЩЕГО КОМИТА на сквош.
Например, если в списке TODO указано
pick 1111111 a good commit
pick 2222222 a bad commit
pick 3333333 revert the bad commit
pick 4444444 another good commit
и вы просто хотите оставить 1111111 и 4444444, вы должны отредактировать список так:
pick 1111111 a good commit
pick 2222222 a bad commit
squash 3333333 revert the bad commit
squash 4444444 another good commit
Это объединит 3 в коммит перед ним (2), затем объединит 4 в коммит перед ним (результатобъединение 2 и 3), так что вы остались с 1 и 4. (Изменения от 2 и 3 все еще включены, но если 3 действительно возвращает 2, то это ничего не значит.)