Удалить коммит в удаленном - PullRequest
0 голосов
/ 24 июня 2018

Я сделал коммит и отправил в удаленную ветку, не осознавая этого, и теперь я хочу отменить этот коммит удаленно, не теряя изменений. Я ищу StackOverflow и Google, но информация, которую я нахожу, отличается в зависимости от того, кто пишет.

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

Прямо сейчас, когда я читаю, мне нужно сделать:

git revert HEAD
git stash -m "message"
git checkout branch
git stash apply
git add.
git commit -m "message"
git push

Я также читал, что я могу выбрать вишню, чтобы взять коммит в другую ветку, которая создаст что-то вроде этого:

git revert HEAD
git checkout branch
git cherry-pick id_commit
git push

enter image description here

1 Ответ

0 голосов
/ 24 июня 2018

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

Просто запустите git rebase --onto other-branch master~1 master (здесь написано «перебазировать диапазон коммитов между мастером с последним до и с мастером (ваш последний коммит) и переиграть его на другую ветку»

Или, если вы предпочитаете сбор вишни, я думаю, что процесс выглядит следующим образом:

  1. git checkout master
  2. git rev-parse HEAD от мастера, чтобы увидеть последний хеш коммита, мы притворимся, что это было 1234567 ...
  3. git checkout other-branch
  4. git cherry-pick -x 1234567 для применения коммита 1234567 к текущей ветви.

После того, как вы перебазировали или выбрали вишню из вышеприведенных инструкций, вы можете при желании стереть коммит с мастера:

  1. git checkout master
  2. git reset HEAD --hard (удалить последний коммит на мастере)
  3. git push --force (принудительно обновить удаленную синхронизированную ветку с новой историей для этой ветви

Затем работайте над своим кодом на other-branch, сливайтесь с мастером и нажимайте всякий раз, когда закончите локальную работу

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