Как удалить коммит с гитхаба
Перейти к содержимому

Как удалить коммит с гитхаба

  • автор:

Удаляем коммит с GitHub

Работая с системами контроля версий иногда возникает ситуация, когда по той или иной причине (чаще по той) нужно отменить последний коммит. Сделать это на локалке как 2 пальца. В соответствующей ветке в консоли пишем такую команду:

Внимание!

Имейте ввиду, что опция —hard отвечает за полную потерю памяти изменений. Всё что было в коммите и всё что вы сделали после него будет удалено. Чтобы избежать этого, используйте опции —soft или —mixed . Подробнее читайте тут.

А что делать, если изменения опубликованы на GitHub? Всего лишь выполнить ещё одну команду:

Владельцам же инструмента разработки phpStorm всё это можно сделать ещё проще. Достаточно лишь пары кликов. Клавиши пусть молодые жмут ))

Как удалить commit на Github?

sergey-kuznetsov

Раз первый коммит единственный и он тебе не нужен, то можно просто удалить репозиторий на GitHub и создать заново. Но можно и не пересоздавать:

Получишь чистый репозиторий с начальным пустым коммитом.
Сам пустой коммит можно использовать как основу для построения своего дерева коммитов.
Либо через ключ —amend замени его на что-то более осмысленное.

А ещё лучше не заниматься ерундой, исправить код и исправить коммит ключиком —amend

  • Facebook
  • Вконтакте
  • Twitter

sergey-kuznetsov

Тогда так
git rm -r .
Удалить желательно всё

Потом закоммитить факт удаления и посмотреть содержимое коммита перед тем как пушить.

Что значит код в файле удалился? Должен был удалиться не код, а сам файл. Точнее все файлы по маске .

sergey-kuznetsov

Если речь про https://github.com/ebaysher/chess
то там вообще нет такого файла или папки. Удали всё руками просто в проводнике.
И потом коммит.

Ты точно уверен что надо удалить коммит? Вариант с исправлением кода на нужный не подходит?

vorozhba / Как удалить commit в Github.txt

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

1. Получаем хэш-код коммита, к которому хотим вернуться.
2. Заходим в папку репозитория и пишем в консоль:
$ git reset —hard a3775a5485af0af20375cedf46112db5f813322a
$ git push —force

А если в первом коммите есть лишние файлы?

be careful with: git reset —hard a3775a5485af0af20375cedf46112db5f813322a
it delete all your current changes, use that command without —hard , then git push —force

огромное спасибо! помогло)

Спасибо, это очень помогло!

спасибо! все-таки русскоязычные запросы в Google тоже хорошо порой помагают.

Спасибо вам большое! Вы нас очень выручили!

@vorozhba
Хелло! А можно ли как-то удалить не последние коммиты путем перемещения HEAD назад, а точечно одни коммит из последовательности? Пример, [1,2,3,4] -> [1,3,4]

@vorozhba Хелло! А можно ли как-то удалить не последние коммиты путем перемещения HEAD назад, а точечно одни коммит из последовательности? Пример, [1,2,3,4] -> [1,3,4]

@vorozhba
Хелло! А можно ли как-то удалить не последние коммиты путем перемещения HEAD назад, а точечно одни коммит из последовательности? Пример, [1,2,3,4] -> [1,3,4]

Через Вебшторм можно, просто удаляешь нужные коммит и пушишь через force. А как с помощью консольных команд не знаю, но точно можно.

@vorozhba
Хелло! А можно ли как-то удалить не последние коммиты путем перемещения HEAD назад, а точечно одни коммит из последовательности? Пример, [1,2,3,4] -> [1,3,4]

Через Вебшторм можно, просто удаляешь нужные коммит и пушишь через force. А как с помощью консольных команд не знаю, но точно можно.

Разве так можно? Там же что-то вроде блокчейна. Следующий зависит от предыдущего. Разве нет?

@vorozhba
Хелло! А можно ли как-то удалить не последние коммиты путем перемещения HEAD назад, а точечно одни коммит из последовательности? Пример, [1,2,3,4] -> [1,3,4]

Через Вебшторм можно, просто удаляешь нужные коммит и пушишь через force. А как с помощью консольных команд не знаю, но точно можно.

Разве так можно? Там же что-то вроде блокчейна. Следующий зависит от предыдущего. Разве нет?
Не знаю на счет блокчейна, и думаю что такого нет в гите.
Но постоянно так делаю, когда в фичебранче что-то разрабатываю, а потом оказывается что в каком-то коммите что-то не нужное добавил, а это могло быть десять коммитов назад к примеру. Просто удалил его локально и через форс пуш обновил данные в удаленном репозитории.
Все, в удаленном репозитории больше нет этого коммита

давно нашел, не раз выручало, красавчик

@vorozhba
Хелло! А можно ли как-то удалить не последние коммиты путем перемещения HEAD назад, а точечно одни коммит из последовательности? Пример, [1,2,3,4] -> [1,3,4]

Через Вебшторм можно, просто удаляешь нужные коммит и пушишь через force. А как с помощью консольных команд не знаю, но точно можно.

Разве так можно? Там же что-то вроде блокчейна. Следующий зависит от предыдущего. Разве нет?
Не знаю на счет блокчейна, и думаю что такого нет в гите.
Но постоянно так делаю, когда в фичебранче что-то разрабатываю, а потом оказывается что в каком-то коммите что-то не нужное добавил, а это могло быть десять коммитов назад к примеру. Просто удалил его локально и через форс пуш обновил данные в удаленном репозитории.
Все, в удаленном репозитории больше нет этого коммита

при удалении и при переименовании названия комита — вебшторм там много что шаманит и делает rebase всякий — о чем потом показывает в своей консоле — но если будут конфликты то предложит сравнивать и можно наломать там что то — лучше всегда перед этим делайте бек ап и потом играйтесь)

How can I remove a commit on GitHub? [duplicate]

The community reviewed whether to reopen this question 1 year ago and left it closed:

Original close reason(s) were not resolved

I «accidentally» pushed a commit to GitHub.

Is it possible to remove this commit?

I want to revert my GitHub repository as it was before this commit.

21 Answers 21

Note: please see an alternative to git rebase -i in the comments below—

git reset —soft HEAD^

First, remove the commit on your local repository. You can do this using git rebase -i . For example, if it’s your last commit, you can do git rebase -i HEAD

2 and delete the second line within the editor window that pops up.

Then, force push to GitHub by using git push origin +branchName —force

See Git Magic Chapter 5: Lessons of History — And Then Some for more information (i.e. if you want to remove older commits).

Oh, and if your working tree is dirty, you have to do a git stash first, and then a git stash apply after.

That should «undo» the push.

3 instead of HEAD^^^.

For an easy revert, here’s another possibility (everything since the commit will be deleted):

For example, if you want to reset your branch to a commit in the past like 71c27777543ccfcb0376dcdd8f6777df055ef479 :

The next step would be to push your branch modifications to origin (remote repo):

Attention

Keep in mind that if other contributors are working with your branch, they might experience conflicts or other issues, for you are changing the history of the branch, but just for you, and not for those who are already using your branch. Beware.

git log to find out the commit you want to revert

git push origin +7f6d03:master while 7f6d03 is the commit before the wrongly pushed commit. + was for force push

Here is a very good guide that solves your problem, easy and simple!

kate's user avatar

In case you like to keep the commit changes after deletion:

Note that this solution works if the commit to be removed is the last committed one.

1 — Copy the commit reference you like to go back to from the log:

2 — Reset git to the commit reference:

3 — Stash/store the local changes from the wrong commit to use later after pushing to remote:

4 — Push the changes to remote repository, (-f or —force):

5 — Get back the stored changes to local repository:

7 — In case you have untracked/new files in the changes, you need to add them to git before committing:

6 — Add whatever extra changes you need, then commit the needed files, (or use a dot ‘.’ instead of stating each file name, to commit all files in the local repository:

You’ll need to clear out your cache to have it completely wiped. this help page from git will help you out. (it helped me) http://help.github.com/remove-sensitive-data/

Delete the most recent commit, keeping the work you’ve done:

Delete the most recent commit, destroying the work you’ve done:

Ekambaram E's user avatar

This work for me.

alper's user avatar

Hilen's user avatar

Use git revert for reverting your push.

git-revert — Revert some existing commits

Revert the changes that the related patches introduce, and record some new commits that record them. This requires your working tree to be clean (no modifications from the HEAD commit).

Note: git revert is used to record some new commits to reverse the effect of some earlier commits (often only a faulty one). If you want to throw away all uncommitted changes in your working directory, you should see git-reset, particularly the —hard option.

Jyoti Prakash's user avatar

To delete the commit from the remote repository:

In order delete the commit from your local repository:

You need to know your commit hash from the commit you want to revert to. You can get it from a GitHub URL like: https://github.com/your-organization/your-project/commits/master

Let’s say the hash from the commit (where you want to go back to) is «99fb454» (long version «99fb45413eb9ca4b3063e07b40402b136a8cf264»), then all you have to do is:

Find the ref spec of the commit you want to be the head of your branch on Github and use the following command:

git push origin +[ref]:[branchName]

In your case, if you just want to go back one commit, find the beginning of the ref for that commit, say for example it is 7f6d03, and the name of the branch you want to change, say for example it is master, and do the following:

git push origin +7f6d03:master

The plus character is interpreted as —force , which will be necessary since you are rewriting history.

Note that any time you —force a commit you could potentially rewrite other peoples’ history who merge your branch. However, if you catch the problem quickly (before anyone else merges your branch), you won’t have any issues.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *