PassFront
  1. PassFront
  2. База знаний
  3. История и отмена изменений

Как заставить Git что-либо забыть?

История и отмена изменений

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

Перестать отслеживать файл

git rm --cached .env      # убрать из индекса, файл останется на диске
echo ".env" >> .gitignore
git commit -m "Не отслеживать .env"

Одного .gitignore мало: уже отслеживаемые файлы он не убирает.

Отменить незакоммиченные изменения

git restore file.js            # вернуть файл к последнему коммиту
git restore --staged file.js   # убрать из индекса

Забыть последний коммит

git reset --soft HEAD~1   # коммит убран, изменения остались
git reset --hard HEAD~1   # коммит и изменения удалены

Удалить секрет из всей истории

Нужно переписать историю (git filter-repo) и сменить сам секрет — он уже мог утечь.

Коротко для собеседования

git rm --cached + .gitignore для файла, git restore для изменений, git reset для коммитов, git filter-repo для истории.

Подробнее: Pro Git — Отмена изменений

Другие вопросы раздела