Перейти к содержимому

Как убрать файл из коммита git

  • автор:

Отмена коммитов — Введение в Git

Git — система, в которой не нужно бояться совершать ошибки. Можно сказать, что ошибки — это единственный способ научиться им пользоваться. В Git практически всегда есть способ восстановить или изменить любые коммиты. На крайний случай спасет повторный git clone .

Что делать, если коммит уже сделан, но он нас по каким-то причинам не устраивает? Ситуаций может быть много, и все они возникают регулярно даже у профессиональных разработчиков:

  • Забыли добавить в коммит нужные файлы
  • Изменения нужно «откатить», чтобы доработать
  • Изменения больше не актуальны, и их нужно удалить
  • Изменения были сделаны по ошибке, и их нужно отменить

По большей части Git движется «только вперед». Правильный подход при работе с ним — это создавать новое, а не изменять старое.

Все ситуации, описанные выше, можно решить новым коммитом, изменяющим код в нужном направлении. Это не только удобно, но и безопасно. Изменение истории коммитов — опасная операция, которая чревата проблемами при синхронизации с удаленными репозиториями. Об этом мы поговорим позже.

Несмотря на сказанное выше, внутри Git существуют специальные команды, позволяющие упростить отмену, либо изменение коммита. С их помощью можно сделать историю коммитов понятной, а сам процесс отката — быстрым. Эти команды мы изучим в этом уроке.

Git revert

Самая простая ситуация — отмена изменений. Фактически она сводится к созданию еще одного коммита, который выполняет изменения, противоположные тому коммиту, который отменяется:

Руками создавать подобный коммит довольно сложно, поэтому в Git добавили команду, автоматизирующую откат. Эта команда называется git revert :

# Этой команде нужен идентификатор коммита # Это коммит, которым мы удалили файл PEOPLE.md git revert aa600a43cb164408e4ad87d216bc679d097f1a6c # После этой команды откроется редактор, ожидающий ввода описания коммита # Обычно сообщение revert не меняют, поэтому достаточно просто закрыть редактор [main 65a8ef7] Revert "remove PEOPLE.md" 1 file changed, 1 insertion(+) create mode 100644 PEOPLE.md # В проект вернулся файл PEOPLE.md git log -p commit 65a8ef7fd56c7356dcee35c2d05b4400f4467ca8 Author: tirion Date: Sat Sep 26 15:32:46 2020 -0400 Revert "remove PEOPLE.md" This reverts commit aa600a43cb164408e4ad87d216bc679d097f1a6c. diff --git a/PEOPLE.md b/PEOPLE.md new file mode 100644 index 0000000..4b34ba8 --- /dev/null +++ b/PEOPLE.md @@ -0,0 +1 @@ +Haskell Curry 

Команда revert может отменять не только последний коммит, но и любой другой коммит из истории проекта. Согласитесь, это очень круто. Без системы контроля версий о таком нельзя было и мечтать.

Команда git reset

Представьте, что вам нужно удалить только что сделанный по ошибке коммит. Конечно, и в этом случае подходит git revert , но так история становится менее читаемой. Если этот коммит сделан был только сейчас и еще не отправлялся на GitHub, то лучше сделать так, как будто бы этого коммита не существовало в принципе.

Git позволяет удалять коммиты. Это опасная операция, которую нужно делать только в том случае, если речь идет про новые коммиты, которых нет ни у кого, кроме вас.

Если коммит был отправлен во внешний репозиторий, например, на GitHub, то менять историю ни в коем случае нельзя. Это сломает работу у тех, кто работает с вами над проектом.

Для удаления коммита используется команда git reset :

# Добавляем новый коммит, который мы сразу же удалим echo 'test' >> INFO.md git add INFO.md git commit -m 'update INFO.md' [main 17a77cb] update INFO.md 1 file changed, 1 insertion(+) # Важно, что мы не делаем git push git reset --hard HEAD~ HEAD is now at 65a8ef7 Revert "remove PEOPLE.md" # Если посмотреть `git log`, то последнего коммита там больше нет 

У команды git reset есть множество различных флагов и способов работы. С ее помощью можно удалять коммиты, отменять их без удаления, восстанавливать файлы из истории и так далее. Работа с ней относится к продвинутому использованию Git, но здесь мы затрагиваем только самую базу.

Флаг —hard означает полное удаление. Без него git reset отменит коммит, но не удалит его, а поместит все изменения этого коммита в рабочую директорию, так что с ними можно будет продолжить работать.

Флаг HEAD~ означает «один коммит от последнего коммита». Если бы мы хотели удалить два последних коммита, то могли бы написать HEAD~2 :

HEAD (переводится как «голова») — так обозначается последний сделанный коммит. Подробнее эту терминологию мы разберем в уроке, посвященном внутреннему устройству Git.

Если не указывать флаг —hard , то по умолчанию подразумевается флаг —mixed . В таком варианте git reset отправляет изменения последнего коммита в рабочую директорию. Затем их можно исправить или отменить и выполнить новый коммит:

echo 'no code no pain' > README.md git add README.md git commit -m 'update README.md' [main f85e3a6] update README.md 1 file changed, 1 insertion(+) # Теперь откатываем последний коммит git reset HEAD~ Unstaged changes after reset: M README.md git status On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add . " to update what will be committed) (use "git restore . " to discard changes in working directory) modified: README.md 

Последнего коммита больше не существует. При этом сделанные в нем изменения не пропали. Они находятся в рабочей директории для дальнейшей доработки.

Самостоятельная работа
  1. Выполните все шаги из урока
  2. Измените добавленный текст на No code No pain
  3. Закоммитьте изменения с сообщением update README.md
  4. Залейте изменения на GitHub

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Как удалить один файл из последнего коммита

Проблема следующая: Хотел запушить на гитлаб три измененных файла, но случайно закоммитил еще один ненужный файл (пока все локально, в удаленную ветку ничего еще не пушил). Что можно сделать чтобы удалить этот лишний файл из коммита? Все делал через intellij idea.

Отслеживать
SorryForAsking
задан 25 апр 2019 в 20:26
SorryForAsking SorryForAsking
383 2 2 золотых знака 5 5 серебряных знаков 22 22 бронзовых знака
25 апр 2019 в 20:40

2 ответа 2

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

Про то, как сделать это из intellij idea не отвечу, а в консоли задачу можно решить, например, так:

  1. git reset —soft HEAD~
  2. git reset ФАЙЛ_КОТОРЫЙ_НЕ_ДОЛЖЕН_ПОПАСТЬ_В_КОММИТ
  3. git commit -m «метка коммита»

Отслеживать
ответ дан 26 апр 2019 в 2:11
3,105 1 1 золотой знак 9 9 серебряных знаков 22 22 бронзовых знака

Дополню ответ @Jigius На втором этапе лучше выполнить git restore —staged файл , чтобы не потерять внесенные изменения в файл.

Git. Удалить файл из индекса

Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

Удаляем файл из индекса.

Если вы добавили файл в индекс с помощью git add, но считаете, что этот файл не должен попасть в коммит(commit), то его можно удалить из индексируемых файлов с помощью команды:

git reset [название файла]

К примеру название нашего файла, который попал в индекс core.php.
Удаляем его из индексации следующим образом:

git reset core.php

удалить файл из коммита

Самый простой способ удалить файл в вашем репозитории Git — выполнить команду «git rm» и указать файл, который нужно удалить. Важно помнить, что файл будет удален из файловой системы при использовании команды «git rm».

Как удалить большой файл из коммита git?

Если большой файл был добавлен в самый последний коммит, вы можете просто запустить: git rm –cached затем удалить большой файл. Чтобы отредактировать коммит, используйте команду git commit —amend -C HEAD.

Как удалить After commit?

Удалите удаленный компьютер с помощью команды git remote rm origin. Добавьте новый пульт, набрав git remote add origin projectA. гит в терминале. Объединяйте проекты принудительным образом: «разрешить несвязанные истории» передается главной команде git pull origin.

Как удалить файлы, которые не были подготовлены для фиксации?

Избавление от файлов Если вы просто удалите файл из своего рабочего каталога, он появится в разделе вашего вывода состояния git, который называется «Изменения, не подготовленные для фиксации» (то есть не подготовленные)…. Если вы затем выполните git rm, он удалит файл на следующих этапах:

удалить файл из фиксации, Как удалить файл из git push?, Как удалить большой файл из git фиксации?, Как удалить после фиксации?, Как удалить файлы, которые не были подготовлены для фиксации?

удалить файл из коммита

Как удалить файлы из git и сохранить их локально?

Удаление файла из репозитория git с сохранением его копии на локальном компьютере. При работе с каталогом скопируйте команду copy git rm — cached someFile. скопируйте git rm —cached -r и вставьте в какой-нибудь каталог.

Как удалить файлы с пульта?

Инструкции по удалению файлов на удаленном сервере Выберите файлы, которые вы хотите удалить с вашего компьютера. Чтобы выбрать сразу группу файлов, нажмите и удерживайте клавишу SHIFT… Вы можете удалить что-либо, щелкнув по нему правой кнопкой мыши, нажав клавишу Delete (Windows) или клавишу FN-Delete (MacOS) на клавиатуре или обе сразу. Щелкните (Windows) или нажмите, удерживая клавишу Command (Mac OS), на выделенном фрагменте, а затем нажмите кнопку «Удалить».

Что такое команда git clean?

Резюме. Напомним, что git clean — это удобный метод удаления неотслеживаемых файлов в рабочем каталоге репозитория. Неотслеживаемые файлы — это те, которые присутствуют в каталоге репозитория, но еще не были добавлены в индекс репозитория с помощью команды git add.

Можете ли вы удалить файл из истории git?

Если вы передадите личную информацию в репозиторий Git, например пароль или ключ SSH, у вас есть возможность впоследствии удалить ее из истории. Чтобы полностью удалить ненужные файлы из истории репозитория, вы можете использовать инструмент git filter-repo или инструмент с открытым исходным кодом BFG Repo-Cleaner.

удалить файл из коммита, Как удалить файлы из git и сохранить локально?, Как удалить файлы с удаленного компьютера?, Что такое команда git clean?, Можно ли удалить файл из истории git?

удалить файл из коммита

Как отменить коммит git?

В обзоре шаги, чтобы git откатить фиксацию и отменить нежелательные изменения, следующие: Найдите идентификатор фиксации, которую нужно отменить, с помощью команды git log или reflog. Запустите команду git revert и укажите идентификатор фиксации изменения, которое вы хотите отменить. Чтобы объяснить, почему откат был необходим, вы должны дать осмысленное объяснение в сообщении коммита Git.

Как удалить файл в PR?

Если нежелательные обновления находятся в совершенно новом файле, который вы создали, то вы можете удалить файл из PR, удалив файл из вашей файловой системы, выполнив команду git rm file path>, а затем зафиксировав свои изменения. Это удалит файл из PR.

Как удалить файл из мерж-реквеста?

В свете этого существует множество доступных методов удаления файла из запроса на слияние, таких как следующие: у вас есть возможность, как вы предложили, добавить новую фиксацию в вашу исходную ветку, которая эффективно отменит изменения, которые были внесены в файлы, которые вы больше не хотите включать. Это может означать отмену изменений, внесенных в ранее отслеживаемые файлы, или удаление файлов, которые в настоящее время не отслеживаются.

Как отменить отслеживание файла в git?

Чтобы правильно выполнить очистку файлов с помощью git, выполните следующие действия: Чтобы просмотреть пробный прогон, выполните команду «git clean -n»; Выполните команду «git clean -f», чтобы принудительно удалить неотслеживаемые файлы; Чтобы избавиться от неотслеживаемых каталогов, используйте команду «git clean -f -d»; Чтобы избавиться от неотслеживаемых файлов gitignore, выполните команду «git clean -f -x», а также. Чтобы выполнить интерактивную «очистку git», добавьте к команде переключатель -i.

удалить файл из фиксации, Как отменить фиксацию git?, Как удалить файл в PR?, Как удалить файл из запроса на слияние?, Как отменить отслеживание файла в git?

удалить файл из коммита

Как отменить коммит перед отправкой?

Возврат вашего последнего обязательства (которое не было отправлено) В своем терминале (терминал, Git Bash или командная строка Windows) перейдите к папке для вашего репозитория Git. Выполните следующую команду: git reset — soft HEAD… В это время будет отменен ваш последний коммит.

Как удалить файл из мерж-реквеста?

В свете этого существует множество доступных методов удаления файла из запроса на слияние, таких как следующие: у вас есть возможность, как вы предложили, добавить новую фиксацию в вашу исходную ветку, которая эффективно отменит изменения, которые были внесены в файлы, которые вы больше не хотите включать. Это может означать отмену изменений, внесенных в ранее отслеживаемые файлы, или удаление файлов, которые в настоящее время не отслеживаются.

Как отменить отслеживание файла в git?

Чтобы правильно выполнить очистку файлов с помощью git, выполните следующие действия: Чтобы просмотреть пробный прогон, выполните команду «git clean -n»; Выполните команду «git clean -f», чтобы принудительно удалить неотслеживаемые файлы; Чтобы избавиться от неотслеживаемых каталогов, используйте команду «git clean -f -d»; Чтобы избавиться от неотслеживаемых файлов gitignore, выполните команду «git clean -f -x», а также. Чтобы выполнить интерактивную «очистку git», добавьте к команде переключатель -i.

Как отменить коммит перед отправкой?

Возврат вашего последнего обязательства (которое не было отправлено) Найдите папку, содержащую ваш репозиторий Git, внутри вашего терминала (подойдет Терминал, Git Bash или командная строка Windows). Выполните следующую команду: git reset — soft HEAD… В это время будет отменен ваш последний коммит.

удалить файл из фиксации, Как отменить фиксацию перед отправкой?, Как удалить файл из запроса на слияние?, Как отменить отслеживание файла в git?, Как отменить фиксацию перед отправкой?

удалить файл из коммита

Как удалить файл из мерж-реквеста?

В свете этого существует множество доступных методов удаления файла из запроса на слияние, таких как следующие: у вас есть возможность, как вы предложили, добавить новую фиксацию в вашу исходную ветку, которая эффективно отменит изменения, которые были внесены в файлы, которые вы больше не хотите включать. Это может означать отмену изменений, внесенных в ранее отслеживаемые файлы, или удаление файлов, которые в настоящее время не отслеживаются.

Как отменить отслеживание файла в git?

Чтобы правильно выполнить очистку файлов с помощью git, выполните следующие действия: Чтобы просмотреть пробный прогон, выполните команду «git clean -n»; Выполните команду «git clean -f», чтобы принудительно удалить неотслеживаемые файлы; Чтобы избавиться от неотслеживаемых каталогов, используйте команду «git clean -f -d»; Чтобы избавиться от неотслеживаемых файлов gitignore, выполните команду «git clean -f -x», а также. Чтобы выполнить интерактивную «очистку git», добавьте к команде переключатель -i.

Как отменить коммит перед отправкой?

Возврат вашего последнего обязательства (которое не было отправлено) Найдите папку, содержащую ваш репозиторий Git, внутри вашего терминала (подойдет Терминал, Git Bash или командная строка Windows). Выполните следующую команду: git reset — soft HEAD… В это время будет отменен ваш последний коммит.

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

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