Как удалить «git commit» из LOG, как будто его никогда не существовало - PullRequest
9 голосов
/ 18 января 2012

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

Я испробовал все подсказки из этого вопроса (" Как удалить 'git commit' ") ,но я вижу коммит в журнале.Как я могу полностью удалить его?

- Правка -

Хорошо, я не даю полностью информацию. Кевин Баллард верны.

На данный момент я не выполняю этот коммит, он только на моей машине.Ответ ouah работает, команда

git log

не будет показывать, но команда

git reset --hard HEAD^

делает «проверить последний коммит и изменить ветку»к этому », поэтому я продолжаю видеть этот коммит с помощью графической программы, такой как SmartGit .

- Edit 2 -

Нет, это ошибка SmartGit !!!!Коммит действительно исчезнет.Я должен закрыть окна журнала, а затем открыть снова.Коммита больше нет.

Ответы [ 2 ]

12 голосов
/ 18 января 2012

Если это последний коммит

git reset --hard HEAD^

если это не последний коммит

git rebase -i commit_hash^

откроется редактор, удалит всю строку с коммитом, сохранит и выйдет.

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

git revert commit_hash

, который добавит новый коммит, который отменит коммит commit_hash.

3 голосов
/ 05 апреля 2016

Эта команда (будьте осторожны, она переписала бы историю):

git rebase --onto commitHash^ commitHash

(решение @ ouah не сработало у меня, а вместо этого у Лили, но его решение не должно быть комментарием, онодолжен быть такой ответ.)

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