Как удалить последний коммит в удаленной ветке? - PullRequest
1 голос
/ 04 июня 2019

Я отправил некоторый код в удаленную ветку, но быстро обнаружил ошибку.

Я хотел «снять фиксацию», поэтому я запустил

git reset hard~~ (extra tilde was by accident)

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

Выполнение

git status

показывает, что «моя ветвь и удаленная ветвь разошлись,и каждый из них имеет 1 и 2 разных коммита "

Я думаю, вот как это выглядит сейчас:

o ---- o ---- A ---- B -- D  origin/master (2 commits ahead of A)
               \
                C  myBranch (my work (1 commit ahead of A)

Как мне изменить мой репозиторий, чтобы он выглядел как

o ---- o ---- A ---- C

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Принудительный толчок для обновления origin/master для фиксации C.

git push -f

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

График коммитов будет иметь вид:

o <--- o <--- A <--- C  myBranch, origin/master
              ^
              |
              +--- (B) <--- (D)

Если ветвь не указывает на D, коммиты B и D будут осиротевшими.Они указывают на A, но никакие коммиты и никакие ветви не указывают на них, поэтому они фактически исчезли.Они будут видны в вашем журнале, но больше нигде.В конце концов, если вы ничего не сделаете с ними, сборщик мусора удалит их.

0 голосов
/ 04 июня 2019

Вы должны выполнить это из главной ветви, чтобы удалить коммиты B и D (последние 2 коммита)

Примечание: будьте очень уверены, что вы делаете здесь, потому что это удалит ваши B и D коммиты с историей. Если вы не уверены, сначала сделайте резервную копию.

git reset --hard HEAD~2
git push --force

После удаления B и D вы можете объединить ветвь с коммитом C поверх A.

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