Всем pnpm dlx create-next-app@latest kill-env
После того, как я задал настройки в терминале, как будет выглядеть проект (в статье это не важно), перейдем к коду. Но перед этим хочу связать проект с удаленным репозиторием Github. Итоговую файловую систему можно увидеть на картинке.
Шаг 2: Подключение локального проекта с Github-репозиторием.
Ничего сверхъестественного, здесь создаю репозиторий для моего проекта и делаю последующее связывание с локальным репозиторием. На этой короткой ноте переходим к 3 шагу.
P.S.: Я не буду здесь прописывать и так ясные команды для связывания, поэтому результат представлен на картинке.
Шаг 3: Разбор кейса и его решение
3.1 В какую проблему можно попасть из-за невнимательности
Предположим, что я, увлекшись разработкой чудо-приложения, забыл к коммиту добавить файл .env в .gitignore, находящийся в корневой директории проекта. Из-за этого секретный файл попадает на страницу удаленного репозитория, что не хорошо.
Для приличия моего коммита я практически полностью удалил код разметки в одном из файлов моего проекта. Сюр в том, что коммит уже на уделённом репозитории и .env файл вместе с остальными изменениями. Как не должно быть в вашем репозитории показан на картинке:
Да, .gitignore файл не отменяет уже зафиксированные изменения (поэтому название папки зависимостей проекта закрашен в серый цвет но не несчастный .env. Это можно увидеть на приложенной картинке. И так, как мы можем это исправить?
3.2 Решение проблемы
Для начала воспользуемся следующей командой:
git rm -r --cached .env
git rm -r --cached .envНе бойтесь, мы удаляем файл .env и все его подпапки из области подготовки Git, но не из самой файловой системы проекта. Внеся изменения, увидим, что .env больше не числится в списках файлов проекта.
Если вы думаете, что это happy end, то спешу разочаровать: это ещё не конец. Перейдя на историю коммитов можно обнаружить заманчивую вещь: хоть мы удалили файл из корневой директории проекта, данные из файла .env как были в истории, так и остались. Не верите? Показываю это на картинке:
Пришло время раз и навсегда расправиться с этой проблемой. Вводим следующую команду, которая удаляет все файлы и папки с именем .env из истории коммитов текущей ветки (HEAD):
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch .env" HEAD
В ответ получим предупреждения о том, что это испортило нашу историю, поскольку это пройдет через всю нашу историю и на 100% устранит её существование. Выполняем следующую команду.
git push --force
После этой команды можно увидеть наши коммиты, однако содержимое файла .env больше не существует в истории коммитах. Показываю на пикче:
С помощью нескольких команд можно добиться такого результата: и .env удалён из удаленного репозитория, и не отображается его содержимое в истории коммитов. Надеюсь, что эта статья поможет вам более эффективно отправить на вечный покой файл .env.
Спасибо, что вы прочли эту статью! До скорых встреч!
ссылка на оригинал статьи https://habr.com/ru/articles/820429/
Добавить комментарий