Как очистить commit в android studio
Перейти к содержимому

Как очистить commit в android studio

  • автор:

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

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

git reset --hard commit_id // commit_id - идентификатор коммита, к которому нужно вернуться.
Внимание!

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

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

$ git push --force

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

17. Удаление коммитов из ветки

Revert из предыдущего раздела является мощной командой, которая позволяет отменить любые коммиты в репозиторий. Однако, и оригинальный и «отмененный» коммиты видны в истории ветки (при использовании команды git log ).

Часто мы делаем коммит, и сразу понимаем, что это была ошибка. Было бы неплохо иметь команду «возврата», которая позволила бы нам сделать вид, что неправильного коммита никогда и не было. Команда «возврата» даже предотвратила бы появление нежелательного коммита в истории git log .

01 Команда reset

Мы уже видели команду reset и использовали ее для согласования буферной зоны и выбранного коммита (мы использовали коммит HEAD в нашем предыдущем уроке).

При получении ссылки на коммит (т.е. хэш, ветка или имя тега), команда reset …

  1. Перепишет текущую ветку, чтобы она указывала на нужный коммит
  2. Опционально сбросит буферную зону для соответствия с указанным коммитом
  3. Опционально сбросит рабочий каталог для соответствия с указанным коммитом

02 Проверьте нашу историю

Давайте сделаем быструю проверку нашей истории коммитов.

Выполните:
git hist 
Результат:
$ git hist * 45fa96b 2011-03-09 | Revert "Oops, we didn't want this commit" (HEAD, master) [Alexander Shvets] * 846b90c 2011-03-09 | Oops, we didn't want this commit [Alexander Shvets] * fa3c141 2011-03-09 | Added HTML header (v1) [Alexander Shvets] * 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets] * 43628f7 2011-03-09 | Added h1 tag [Alexander Shvets] * 911e8c9 2011-03-09 | First Commit [Alexander Shvets] 

Мы видим, что два последних коммита в этой ветке — «Oops» и «Revert Oops». Давайте удалим их с помощью сброса.

03 Для начала отметьте эту ветку

Но прежде чем удалить коммиты, давайте отметим последний коммит тегом, чтобы потом можно было его найти.

Выполните:
git tag oops 

04 Сброс коммитов к предшествующим коммиту Oops

Глядя на историю лога (см. выше), мы видим, что коммит с тегом «v1» является коммитом, предшествующим ошибочному коммиту. Давайте сбросим ветку до этой точки. Поскольку ветка имеет тег, мы можем использовать имя тега в команде сброса (если она не имеет тега, мы можем использовать хэш-значение).

Выполните:
git reset --hard v1 git hist 
Результат:
$ git reset --hard v1 HEAD is now at fa3c141 Added HTML header $ git hist * fa3c141 2011-03-09 | Added HTML header (HEAD, v1, master) [Alexander Shvets] * 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets] * 43628f7 2011-03-09 | Added h1 tag [Alexander Shvets] * 911e8c9 2011-03-09 | First Commit [Alexander Shvets] 

Наша ветка master теперь указывает на коммит v1, а коммитов Oops и Revert Oops в ветке уже нет. Параметр —hard указывает, что рабочий каталог должен быть обновлен в соответствии с новым head ветки.

05 Ничего никогда не теряется

Что же случается с ошибочными коммитами? Оказывается, что коммиты все еще находятся в репозитории. На самом деле, мы все еще можем на них ссылаться. Помните, в начале этого урока мы создали для отмененного коммита тег «oops». Давайте посмотрим на все коммиты.

Выполните:
git hist --all 
Результат:
$ git hist --all * 45fa96b 2011-03-09 | Revert "Oops, we didn't want this commit" (oops) [Alexander Shvets] * 846b90c 2011-03-09 | Oops, we didn't want this commit [Alexander Shvets] * fa3c141 2011-03-09 | Added HTML header (HEAD, v1, master) [Alexander Shvets] * 8c32287 2011-03-09 | Added standard HTML page tags (v1-beta) [Alexander Shvets] * 43628f7 2011-03-09 | Added h1 tag [Alexander Shvets] * 911e8c9 2011-03-09 | First Commit [Alexander Shvets] 

Мы видим, что ошибочные коммиты не исчезли. Они все еще находятся в репозитории. Просто они отсутствуют в ветке master . Если бы мы не отметили их тегами, они по-прежнему находились бы в репозитории, но не было бы никакой возможности ссылаться на них, кроме как при помощи их хэш имен. Коммиты, на которые нет ссылок, остаются в репозитории до тех пор, пока не будет запущен сборщик мусора.

06 Опасность сброса

Сброс в локальных ветках, как правило, безопасен. Последствия любой «аварии» как правило, можно восстановить простым сбросом с помощью нужного коммита.

Однако, если ветка «расшарена» на удаленных репозиториях, сброс может сбить с толку других пользователей ветки.

Убрать последний git-коммит, не меняя файлов проекта

У меня есть локальный репозиторий моего проекта. Там есть несколько коммитов. Последний коммит был сделан необдуманно (вспомнилось, что там есть пара проблем, которые не хотелось бы увековечивать). Я умею возвращаться к предыдущему коммиту (команда Revert). Но это не то, что мне нужно. Так я потеряю много полезного, сделанного между предыдущим коммитом и последним(необдуманным). В общем, хочу сделать так, чтобы последнего коммита не было, но все мои файлы были такими, какие они есть сейчас.

Отслеживать
25.9k 7 7 золотых знаков 31 31 серебряный знак 48 48 бронзовых знаков
задан 8 июн 2016 в 16:36
2,889 1 1 золотой знак 14 14 серебряных знаков 26 26 бронзовых знаков
Здесь есть то, что вам нужно? ru.stackoverflow.com/q/431520/181472
8 июн 2016 в 17:03
Вопрос и ответ синхронно идут )
14 июн 2016 в 19:38

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Убрать последний коммит

console

Просто удаляем последний коммит из ветки, в которой находимся. Указатель ветки перейдет на предыдущий. Все изменения, внесённые в этом коммите, останутся в рабочей области проекта (т.е. в файлах на диске).

git reset HEAD^ 

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

git reset --soft HEAD^ 

GUI

То же самое можно сделать в Android Studio: View → Tool Windows → Version Control , вкладка Log , там ПКМ по предыдущему коммиту и Reset Current Branch to Here (выбрать Soft)

введите сюда описание изображения

Отредактировать (пересоздать) последний коммит

Последний коммит был сделан необдуманно (вспомнилось, что там есть пара проблем, которые не хотелось бы увековечивать)

Этот коммит также можно отредактировать заменить новым. Просто добавьте в индекс все нужные файлы в том состоянии, которое достойно отлития в бронзе и высечения в мраморе.

git add file1 file2 folder git commit --amend --no-edit 

Ключ —amend сообщает git о том, что нужно не создавать новый коммит, а пересобрать последний. Это нельзя назвать редактированием, т.к. коммиты — неизменяемые (immutable) объекты, как строки в Java.

Ключ —no-edit сообщает git о том, что мы не хотим менять комментарий последнего коммита. Вместо него можно задать новый комментарий: git commit —amend -m’bla bla bla’

Для этого тоже есть графический способ: специальная галочка в окне создания коммита:

Как удалить коммиты на GitHub?

Здравствуйте! Я хотела бы узнать как можно удалить коммиты, хранящиеся на GitHub, созданные в AndroidStudio?

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Сделанные коммиты присваиваются другому пользователю (Github)
День добрый друзья (если день конечно). Да, понимаю, написал не по разделу, но к сожалению не смог.

Как удалить файлы непосредственно из GitHub?
Конфиги, кэш. Они уже там. С исходной ветки, коммитов ещё небыло.

Как удалить коммит если он залит на github?
Как удалить коммит если он залит на github?

как удалить токет github в Yii2 на openserver?
Добрый день. OpenServer в консоле при установке виджета для yii2 был запрошен токен, создал его на.

466 / 323 / 42
Регистрация: 31.10.2009
Сообщений: 546
Записей в блоге: 2

Лучший ответ

Сообщение было отмечено Julia Moskvina как решение

Решение

почитайте команды git reset

Отмена последнего коммита
git reset HEAD~

Полное удаление последнего коммита
git reset —hard HEAD~1

Регистрация: 29.06.2021
Сообщений: 99
Спасибо большое!
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как удалять коммиты, бранчи?
Да, гуглил, пробовал, но не получилось. Если чего-то не знаю — напишите, пожалуйста.

Как перенести коммиты из одной ветки в другую
Есть ветка А и ветка Б, из ветки А сделали ветку С и кинули туда несколько коммитов. Как эти комиты.

Не удалить репозиторий на Github
Здравствуйте, создал репозиторий на github и не могу его удалить. Кнопка не активна, что делать?

Не удается удалить репозиторий github
Не удается удалить репозиторий github Никак кнопка не становится активной все перепробовала .

Удалить GitHub репозиторий из TeamExplorer в VS2015
Здравствуйте. Я создал GitHub- репозиторий SimpleConsoleObject через TeamExplorer. Затем я удалил.

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

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