Отмена мерзавца к предыдущему коммиту - PullRequest
0 голосов
/ 29 октября 2019

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

сброса и возврата

. Кто-нибудь, пожалуйста, скажите мне, как я могу вернуть его к старому коммиту. Я перенес все свои изменения в основную ветку, так как работал только над одной веткой.

Ответы [ 4 ]

1 голос
/ 30 октября 2019

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

Если вас не волнует материал, представленный этими 20 коммитами, и вы просто хотите избавиться от них (вот как я понял ваш вопрос), тогда я пойду с

git reset --hard HEAD~21

, а затем git push -f origin master.

Если вы делаете , заботитесь о 19 из 20 этих коммитов, и вы уверены, что внесенные ими изменения совершенно не связаны с этимодин «который ломает все», я бы пошел на

git rebase --interactive HEAD~21

, который перечислит все 20 коммитов. Измените pick на drop перед «виновным» принятием и сохранением. Это удалит этот коммит из истории. Позаботьтесь о конфликтах слияния (если они есть) и продолжайте перебазирование. После того, как все будет сделано, вам нужно будет принудительно нажать, поскольку это также изменит историю ветвления.

0 голосов
/ 29 октября 2019

аналогично отметьте и отметьте тоже. Вы можете оформить старый коммит, проверив ваши сообщения коммита. например:

$ git hist
* fa3c141 2011-03-09 | Added HTML header (HEAD, master) [Alexander Shvets]
* 8c32287 2011-03-09 | Added standard HTML page tags [Alexander Shvets]
* 43628f7 2011-03-09 | Added h1 tag [Alexander Shvets]
* 911e8c9 2011-03-09 | First Commit [Alexander Shvets]

и оформление заказа

git checkout <hash>

или

git revert <commit hash>

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

0 голосов
/ 29 октября 2019
git revert HEAD~20

будет возвращать последние 20 коммитов, один за другим.

Однако вам, скорее всего, понадобится всего один возвратный коммит, поэтому сделайте

git revert --no-commit HEAD~20..

Чтобы получить один возвратный коммитзатем будут возвращены 20 последних коммитов и

git commit

для отправки указанного возврата. То, что вы можете затем нажать.

0 голосов
/ 29 октября 2019

Просто git revert HEAD~3, где 3 - количество коммитов для возврата

...