Отменить коммит на удаленном, но не локальном - PullRequest
0 голосов
/ 30 апреля 2018

Есть ли способ отменить последний коммит на удаленном, а не локальном? У меня есть коммит, который еще не готов к отправке, но я хочу оставить его в своем местном представительстве.

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Самый безопасный вариант - создать отдельную ветку с указанным вами коммитом и явно revert зафиксировать в основной ветке и отправить изменения.

git checkout -b temp
git checkout master
git revert <commit_id>
git push origin master

Когда ваш коммит будет готов к повторному выпуску, вы можете отменить коммит.

Другой подход заключается в том, чтобы снова создать отдельную ветвь и сбросить HEAD в основной ветке к предыдущей фиксации и принудительно протолкнуть изменения. Этот вариант следует использовать только в том случае, если вы ни с кем не делитесь веткой или явно убедитесь, что она не повлияет на других.

0 голосов
/ 30 апреля 2018

Лучшим вариантом здесь, вероятно, является git revert фиксация на удаленном компьютере:

git revert <SHA-1 of bad commit>

Затем, просто нажмите как обычно, и состояние пульта будет вашим последним коммитом.

Если вам нужно немедленно удалить неверный коммит, то подумайте о следующем:

# from your local branch
git reset --soft HEAD~1
git stash
git revert <SHA-1 of bad commit>
git push origin your_branch
git stash apply
git commit -m 'your latest commit'

Это берет ваш последний коммит и сбрасывает его обратно на сцену. Затем мы можем спрятать эти поэтапные изменения. Обратите внимание, что это существенно перемещает ваш последний коммит из ветки в тайник. Очистив местное отделение, вы можете git revert выполнить неудачный коммит, нажать, а затем применить тайник для возврата изменений.

0 голосов
/ 30 апреля 2018

Конечно, вы можете поместить родительский элемент подсказки удаленной ветви в удаленную ветку:

git fetch
git push -f origin origin/master^:master

, где origin - удаленный, а master - ветвь. Или, если вы уже синхронизированы и в соответствующей ветке, это просто

git push -f origin HEAD^:master

при условии, что вы намереваетесь удалить коммит, а не создавать возвратный коммит (поскольку это, вероятно, будет просто раздражением в будущем).

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