Отмените git rebase - PullRequest
       14

Отмените git rebase

0 голосов
/ 21 марта 2019

Используя intelliJ, я работаю над функциональной веткой, я хотел интегрировать изменения, которые моя команда сделала на мастере, в мою ветку, но я все испортил.
Я проверил мастер, из всплывающего окна Git я выбрал ветвь объекта и выбрал «перебазировать текущий на выбранный», думая, что это добавило бы изменения от мастера поверх ветки объекта, к сожалению, произошло обратное. Итак, что я хотел бы сделать сейчас, это отменить эту ребазу на мастере, я бы хотел вернуть мастера к последней фиксации головы.
Любой совет?
Я читал, что перебазирование создает новый коммит, но я думаю, что это не прошло, потому что у меня есть конфликты, когда из командной строки git я запускаю git status из мастера, я вижу:

You are currently rebasing branch 'master' on 'FEATURE/....'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)

no changes added to commit (use "git add" and/or "git commit -a")

Ответы [ 3 ]

1 голос
/ 21 марта 2019

Если ребаз не закончен, просто прервите его.Если перебазирование прекращается из-за конфликтов, появляется подсказка для их устранения.Если вы отменили запрос на объединение без разрешения конфликта, должно появиться уведомление с параметрами «Устранить конфликты», «Продолжить» и «Прервать» Rebase notification

Кроме того, при продолжающемся ребазировании действиеОтмена отмены доступна в верхней части всплывающего окна "Ветви"

Branches popup

Она также доступна в меню VCS - Git.Вы всегда можете использовать Найти действие (Ctrl + Shift + A) или Искать везде (Двойная смена), чтобы найти его.Или используйте git rebase --abort в командной строке, например, через встроенный терминал (Alt + F12, чтобы открыть его)

Если rebase уже завершен, вы должны сбросить текущую ветку (которая все еще является главной), чтобы зафиксировать еераньше был на.Вы можете сбросить его до того же коммита, в котором находится origin / master, если только не были нефиксированные коммиты.

Если были нефиксированные коммиты, вы должны использовать git reflog в командной строке, чтобы узнать хеш коммитаи затем сбросьте текущую ветку там.

, думая, что это добавило бы изменения от мастера поверх ветви функций, к сожалению, это произошло наоборот

BTW, IntelliJпоказывает подсказки, разъясняющие действия.Когда вы выбираете действие во всплывающем окне ветвей, в строке состояния отображается описание действия с точными именами ветвей.

1 голос
/ 21 марта 2019

Любой совет?

Сначала используйте Git из командной строки и просто переходите к графическому интерфейсу после привыкания к ежедневным командам.

Я бы посоветовал вам прочитать немного о git rebase, чтобы иметь немного знаний для работы.

git-rebase - повторное применение коммитов поверх другого базового наконечника

(от: https://git -scm.com / docs / git-rebase )

Автоответчик ...

Вы находитесь в процессе перебазирования, и, основываясь на моем XP на графическом интерфейсе, большинство из них не справляются с процессом перебазирования должным образом.

Выполните следующие действия:

  1. Откройте папку репозитория в вашем терминале (linux, osx) или в Git Bash (windows).
  2. Давайте прервём и начнем снова, выполним в терминале: "git rebase --abort". Эта команда вернет ваш master в состояние HEAD до того, как вы начнете rebase .

С этого момента давайте сделаем rebase через терминал, но имейте в виду, что, как и merge, rebase также должен запускаться из ветви, которую вы хотите обновить:

  1. git checkout master или ветвь , которую вы хотите получать с помощью коммитов . 1050 *.
  2. git rebase my_feature_branch: пожалуйста, прочитайте вывод терминала! У вас будет достаточно всех инструкций для выполнения этой перезагрузки.

PS: Вы можете столкнуться со многими шагами и многими git rebase --continue, но не волнуйтесь, это нормальное поведение Git. Как только вы получите конфликт, исправьте его как обычное слияние, зафиксируйте при необходимости и продолжайте.

0 голосов
/ 21 марта 2019

Итак, что я хотел бы сейчас сделать, это отменить эту ребазу на мастере, я бы хотел вернуть мастера к последнему коммиту головы.

Предположительно, вы работаетев вашей собственной локальной копии хранилища, которое размещено на сервере где-то.В этом случае на этом сервере есть отличная версия ветки master, и вам нужно просто указать git заменить локальную master на локальную.Допустим, общий репо называется upstream.Вы можете сделать следующее:

git checkout master

, чтобы убедиться, что вы действительно находитесь на ветке master, как и ожидаете.Вы собираетесь стереть все локальные изменения в ветке master, поэтому стоит убедиться, что вы находитесь в нужном месте.Тогда:

git fetch upstream master
git reset --hard upstream/master

После этого ваш master должен согласиться с тем, что на сервере.Для более подробной информации по этой теме, посмотрите на соответствующий вопрос, Как заставить «git pull» перезаписывать локальные файлы? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...