Как отменить слияние после перебазирования слитного коммита? - PullRequest
0 голосов
/ 05 мая 2020

Я слил ветку с тестовой на главную. Затем мне нужно отменить его, но я не могу отменить объединенный коммит, поэтому я выполняю перебазирование. Но после того, как ветка rebase все еще отображается как объединенная, я не вижу разницы в ветке. Как это можно исправить?

1 Ответ

0 голосов
/ 07 мая 2020

Если вы хотите отменить слияние, и если перезапись истории подходит в вашей ситуации:

  1. Убедитесь, что у вас есть резервная копия вашего репо (на всякий случай). Просто скопируйте весь каталог.

  2. Найдите фиксацию ha sh в главной ветке для фиксации непосредственно перед слиянием. Назовем его xyz.

    Эта команда git log упрощает задачу:

    git log --graph --all --pretty="%C(dim yellow)%h %C(dim cyan)%cd %C(auto)%d%C(reset) %s"
    

  3. Сделайте это: git branch -f master <xyz>.

  4. Убедитесь, что все в порядке:

    • посмотрите обновленную историю (например, используя мою команду git log выше). Он больше не должен показывать слияние.
    • checkout master, и убедитесь, что все в порядке. Вы также можете запустить git log --oneline из этого контекста для одной окончательной проверки.
  5. Если вы ранее отправили мастер слияния на удаленный компьютер, вы можете перезаписать его с помощью git push -f (добавление любых других параметров, которые вы использовали ранее в команде pu sh).

    ⚠️ ВНИМАНИЕ: вы переписываете историю, и это может повлиять на других пользователей, которые уже начали работать с объединенным мастером.

  6. Когда вы уверены, что все в порядке и ничего не потеряно, удалите резервную копию. Но не помешает подержать его пару недель, пока вы не будете уверены.

...