Сделайте это, не избавляясь от файлов, которые нельзя помещать в репозиторий.

Большинство из нас, вероятно, закрепили в репозитории, может быть, даже в общедоступном, что-то, что нам не нужно: учетные данные, файлы сборки, временные файлы. Возможные проблемы:

  • Опубликованные конфиденциальные данные (например, файлы среды, содержащие учетные данные для входа в базу данных или ключи API)
  • Создавайте файлы, которые регулярно меняются без необходимости
  • Файлы, специфичные для пользователя (например, личные настройки IDE)

Хорошим примером является папка .idea, которая создается, если вы используете IDE, созданные JetBrains (например, IntelliJ IDEA). Предположим, кто-то случайно добавил эту папку, что делает ее версией контролируемой. Каждый раз, когда кто-то вносит изменения в свою личную конфигурацию IntelliJ, Git сообщает нам, что мы изменили этот файл. Но других разработчиков не следует заставлять использовать ту же конфигурацию. Кроме того, это затрудняет слияние / перебазирование.

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

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

Как удалить зафиксированные файлы из системы контроля версий Git

  1. Создайте .gitignore файл, если вы еще этого не сделали
  2. Отредактируйте .gitignore, чтобы он соответствовал файлу / папке, которые вы хотите игнорировать.
  3. Выполните следующую команду: git rm --cached path/to/file. Git отобразит список удаленных файлов. Флаг --cached следует использовать, если вы хотите сохранить локальную копию, но удалить ее из репозитория.
  4. Убедитесь, что эти файлы удаляются из системы управления версиями, используя git status
  5. Отправьте изменения в репозиторий

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

Примечание. Такие данные по-прежнему можно получить из истории Git. Поэтому вам необходимо удалить его из истории Git, если вы хотите избавиться от конфиденциальных данных. Проверьте huffleHog, если вы хотите удалить такие данные из своего репозитория Git.