Как отменить выдавленный коммит в bitbucket - PullRequest
0 голосов
/ 14 июня 2019

Я собрал 7 коммитов (используя git rebase -i HEAD~7) в один коммит и перенес изменения на битбакет-сервер. Теперь я понял, что мне нужно нажать 7 коммитов в исходном состоянии.

Я пробовал git reflog и git reset --hard HEAD@{7} Но вижу только один коммит.

Ответы [ 2 ]

3 голосов
/ 14 июня 2019

В git reflog должна быть строка типа

8847515 HEAD@{7}: rebase -i (start): checkout HEAD~7

Теперь он может стать HEAD@{8} или HEAD@{9} в вашем хранилище. Найдите запись тайника прямо под этой строкой, которая является исходным заголовком до начала интерактивной перезагрузки. Это может быть похоже на 0874c8a HEAD@{10}: commit: foo bar. Вместо этого верните этот коммит,

git reset 0874c8a --hard
2 голосов
/ 14 июня 2019

Самый простой способ отменить перебазирование:

git reset --hard ORIG_HEAD
# or
git checkout -b recoveredBranch ORIG_HEAD

Это работает только для последней перебазировки.

Теперь HEAD@{7} будет указывать на 7 состояний задней части головы.Трудно предсказать, куда это будет указывать.Это зависит от того, что ты делал.Каждый сброс / извлечение означает, что вам нужно увеличивать это число.

В качестве крайней меры найдите последний коммит перед перебазировкой в ​​reflog и используйте его хэш:


git checkout -b recoveredBranch a0a0ab0a
...