Отмена фиксации в GitHub Desktop
You can use GitHub Desktop to revert a specific commit to remove its changes from your branch.
When you revert to a previous commit, the revert is also a commit. The original commit also remains in the repository’s history.
Tip: When you revert multiple commits, it’s best to revert in order from newest to oldest. If you revert commits in a different order, you may see merge conflicts.

- In the left sidebar, click History.

Right-click the commit you want to revert and click Revert Changes in Commit.
Как отменить последний коммит git
Тут нужно понять, что именно необходимо сделать. Потому что под отменой часто понимают удаление последнего коммита. Удалить последний коммит можно очень просто с помощью команды git reset . Причём можно как сохранить изменения в рабочей директории, так и полностью удалить все изменения сделанные в последнем коммите.
# удаляем только коммит git reset --hard HEAD~ # удаляем коммит и изменения
А вот отменить изменения сделанные в последнем коммите можно с помощью команды git revert . Она делает еще один коммит, но с противоположными изменениями.
# нужно передать ей хеш коммита, который мы отменяем
28 декабря 2022
Обратите внимание, что команда git reset может быть опасна, поскольку она изменяет историю репозитория. Поэтому важно следить за тем, что вы делаете, и убедиться, что вы работаете над локальным репозиторием, а не с удаленным репозиторием, так как при изменении истории удаленного репозитория у других участников могут возникнуть проблемы с синхронизацией своих локальных репозиториев.
Как откатить проект до версии на GitHub?
Как откатить проект до версии на GitHub? На GitHub лежит проект, я у себя на компе сделал изменения и даже не коммитил, после понял что лучше этих изменений не делать и хочу вернуть все как было на момент последнего коммита.
git fetch , git pull пробовал, git clone тоже пробовал, все не то.
Отслеживать
51.6k 201 201 золотой знак 63 63 серебряных знака 245 245 бронзовых знаков
задан 30 мар 2018 в 9:14
Aleksandr Sergeevich Aleksandr Sergeevich
335 2 2 серебряных знака 12 12 бронзовых знаков
git revert —continue пробовали? Но вообще странно, что git clone вам не помог, ведь там создаётся новая папка с исходниками, которые лежат удалённо.
30 мар 2018 в 9:24
чтобы git revert воспользоваться, я так полагаю надо сперва коммит сделать, а потом откатить его?
30 мар 2018 в 9:43
git clone копирует только те файлы, что есть на git Hub, а у меня на компе еще часть в игноре, в итоге после git clone часть файлов не досчитался
30 мар 2018 в 9:45
Блин, да, в общем я запутался и оказался неправ, в Intellij IDEA есть revert, который позволяет откатить файлы на состояние коммита, поэтому и полез искать по гиту его. Ответ с reset —hard верный. По поводу clone, я думал вы в другую папку пытались склонировать.
30 мар 2018 в 9:47
Советую использовать GitExtension. Он удобнее классического Git GUI.
30 мар 2018 в 10:01
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
git reset --hard @
Отслеживать
ответ дан 30 мар 2018 в 9:36
1,567 6 6 серебряных знаков 8 8 бронзовых знаков
Коммита не было, ветка никуда не уехала, reset некуда сделать
30 мар 2018 в 9:37
Такой вариант тоже рабоатет
30 мар 2018 в 9:38
Автор не говорил, что создавал новую ветку. Судя по этому, он находится в мастере, и reset будет сделан до головного коммита мастера.
30 мар 2018 в 9:38
А, ну хотя да, согласен
30 мар 2018 в 9:42
«Автор не говорил, что создавал новую ветку», но он и не говорил, что ее не создал. Обычно новые изменения делают не в master.
– user282693
2 апр 2018 в 12:38
Я в подобных случаях делаю git reset —hard HEAD — это практически то же самое, что и ответ @АлександрГрушко.
Существующие файлы, о которых гит не знает, вы не удалите таким способом, но тут уже никак, разве что вы сами удалите эти файлы. (@D-side подсказывает, что можно воспользоваться командой git clean -df – удаляет все файлы в папке, которые не относятся к проекту и не сохранены в репозитории)
Альтернативно, можете забрать изменения в карман и тут же его опустошить:
git stash git stash drop
Отслеживать
ответ дан 30 мар 2018 в 10:36
28.6k 21 21 золотой знак 59 59 серебряных знаков 141 141 бронзовый знак
«тут уже никак, разве что вы сами удалите эти файлы» — чем, кстати, занимается git clean (с определёнными флагами).
– user181100
30 мар 2018 в 10:58
@D-side Кстати, выходит, если часть файлов в .gitignore и соответственно в контроле версий не участвует, то командой git clean -df их не подотрешь случайно, верно? Я так понял параметр -df должен не позволить ему перестараться или я не правильно понял?
30 мар 2018 в 12:02
@AleksandrSergeevich «не перестараться» ему говорит отсутствие среди опций x (которая как раз говорит «и не смотри на гитигноры»). И вообще, есть же инструкция 🙂
– user181100
30 мар 2018 в 12:06
«это практически то же самое» — не совсем так. Поэтому, по моему мнению, этот ответ более правильный и полный. Вместо HEAD лучше @, на 3-и знака короче.
– user282693
2 апр 2018 в 13:35
попробуйте git reset —mixed с указанием ветки, должно отмениться ваше добавление без коммита
Отслеживать
ответ дан 30 мар 2018 в 9:37
21 3 3 бронзовых знака
git reset —mixed вроде же не трогает рабочую копию в принципе? Кажется, это совершенно не то что нужно автору.
30 мар 2018 в 10:05
вроде как автор и не коммитил, я так полагаю речь идет про локальный репозиторий, который он просто хочет отменить добавления и не хочет наткнутся на конфликты. В данном случае можно при не желании танцевать с бубном удалить весь репозиторий с локалки и склонировать заново 🙂
30 мар 2018 в 11:57
Попробуйте использовать git checkout [имя файла] , подробнее тут
Отслеживать
ответ дан 30 мар 2018 в 9:26
2,298 1 1 золотой знак 9 9 серебряных знаков 12 12 бронзовых знаков
checkout не вернёт файлы в состояние с сервера
30 мар 2018 в 9:27
Да, не вернет, но зачем его брать с сервера, если оно есть в папке .git
30 мар 2018 в 9:28
Ой, да, но всё равно, если коммита не было, то он изменённые в данный момент файлы не вернёт в предыдущее состояние коммита, нужен revert
30 мар 2018 в 9:30
@PavelMayorov, reset же ветку возвращает на коммит, а ему насколько я понимаю, надо тупо откатить текущие изменения
30 мар 2018 в 9:36
если поменялось много файлов — то надоест для каждого делать чекаут, так что вариант так себе.
30 мар 2018 в 10:37
Решение:
Вижу в вопросе, что вы не делали комит, если также вы не добавляли измененные файлы в индекс командой git add , то можете воспользоваться командой:
git checkout -- .
Эта команда делает откат изменных файлов к их исходному состоянию, т.е. состоянию когда не было совершенно каких либо изменения.
Теория:
Откуда Git узнает, на какой ветке вы находитесь в данный момент? Он хранит специальный указатель, который называется HEAD (верхушка).
- git reset — обновляет индекс, перемещая его на HEAD.
- git checkout — обновляет рабочую ветку. HEAD будет обновлен в случае, если вы делаете переход с ветки на ветку.
О главном:
Необходимо понимать что вы хотите получить после ввода команды. Более детально описано здесь — ссылка на статью.
Как откатить изменения в GIT?
С гитом знаком недавно. Использую GitHub Desktop, Sourcetree, SmartGit.
Создал «пустой-gitignore-readme» репозиторий на битбакет. Клонировал его на компьютер (указал папку).
В этой папке создал проект.
В работе использую одну ветку — мастер. Изменяю проект, делаю коммит и пушу всё на битбакет. Все хорошо, без ошибок.
Но вот, после пары изменений и коммитов, проект перестал нормально работать. Нужно откатить изменения.
Как можно откатить изменения к предыдущему коммиту и затереть все последующие?
Т.е. всё, что было после указанного коммита удалить везде — локально и на битбакете?
PS
По началу вроде получалось Reverse commit, потом пошли ошибки, требования закоммитить что то ещё, требования разрешить конфликт. И всё это в коммитах выше. А мне они не нужны, мне надо просто откатится к точке/коммиту ранее и стереть всё что выше т.к. там всё с ошибками.
- Вопрос задан более трёх лет назад
- 1800 просмотров
1 комментарий
Простой 1 комментарий