Git отменить выдвинутые коммиты (по ошибке удалил папку), которые имеют другие коммиты сверху - PullRequest
0 голосов
/ 28 февраля 2019

Хорошо, поэтому я удалил папку по ошибке и нажал это изменение

Затем я отменил, а committed again, and нажал
Затем я продолжил работать в течение 2 месяцев

Теперь я заметил, что все мои аннотации в основном гласят: «whops delete by error»

есть ли способ удалить только папку удаления и отменить удаление и сохранить все остальное?

Я работаю сам, нет членов команды, не стоит беспокоиться о том, чтобы проверить это или что-то еще

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Так как вы здесь хозяин своего корабля (переписывание истории разрешено, как вы упомянули), я бы предложил интерактивный перебазирование здесь *.( doc )

И перед запуском , поскольку это сложная операция, как напомнил Lasse Vågsåther Karlsen прямо под , настоятельно рекомендуем вамсделайте резервную копию вашей ветви (например, git branch <backupBranch> <originalBranch>).

Сначала выполните поиск хэшей SHA-1 двух коммитов (удаление и удаление) до git log.(Я предполагаю, что вы можете сделать это, но не стесняйтесь спрашивать подробности об этой части, если это необходимо.)

Затем с

git checkout <yourBranch>
git rebase -i <deletionCommit>^

(обратите внимание, чтобы начать интерактивный переход отФиксация всего за до фиксации удаления)

вы получите открытый редактор со списком коммитов из указанной точки в HEAD, которому предшествует ключевое слово:

pick 295ea4a Some commit message
pick 9cb2b54 Some other commit message
pick fe91df1 Yet another commit message

Теперь измените pick на drop для двух коммитов, которые нужно отбросить, и закройте / сохраните редактор.

И завершите перебазирование с помощью

git rebase --continue

(если что-то пойдетвбок, используйте git rebase --abort, чтобы восстановить вещи непосредственно перед началом перебазировки)

И, наконец, не забывайте, что вам понадобится git push -f <remote> <branch> в следующий раз, чтобы обновить старый ref, так как каждый коммит вниз по линии будетбыть другим, будь то только по указанию их родителей.


* (потому что через 2 месяца у вас может быть достаточное количество коммитов, поэтому git reset --hard <deletionCommit>^ && git cherry-pick <nextGoodCommit-1> <nextGoodCommit-2> <nextGoodCommit-3> может быть очень утомительным, иинтерактивная перебазировка в основном автоматизирует именно это)

0 голосов
/ 28 февраля 2019

есть ли способ удалить только папку удаления, а также отменить удаление и сохранить все остальное?

  1. Не ясно, что вы имеете в виду "удалить"просто папка для удаления "

  2. отмена удаления

    # Undo any change based upon the commit SHA1 (or multiple)
    git revert SHA-1 SHA-2 ...  SHA-N
    

Теперь я заметил, что все мои аннотациив основном читайте "whops удалить по ошибке"

Как вывести средства за последний коммит файла

git log -n 1 -- <file path>

Теперь используйте этот SHA для извлечения желаемого контента

git checkout <SHA-1> -- <path>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...