Чтобы отделить сгенерированные файлы от исходного кода на Mac, создайте специальную выходную папку внутри репозитория, а затем добавьте эту папку в файл .gitignore репозитория. Finder помогает создавать и просматривать папки; правила игнорирования Git не дают сгенерированным результатам попасть в будущие коммиты. Это работает для файлов, которые Git еще не отслеживает, поэтому перед применением проверьте статус репозитория.
Создание выходной папки в Finder
Откройте папку репозитория в Finder и создайте папку для сгенерированных файлов, например build или dist, выбрав Файл > Новая папка или нажав Shift-Command-N. Оставьте исходные файлы на своих местах и настройте инструмент сборки так, чтобы он записывал результаты в эту папку. Имя папки должно совпадать с фактическим путем вывода инструмента; простое создание папки не перенаправляет сборку. Apple описывает шаги по созданию папок в Finder в своем руководстве по упорядочиванию файлов в Finder.
Если вы не уверены, какие файлы являются сгенерированными, проверьте конфигурацию инструмента сборки или документацию проекта, прежде чем перемещать или исключать что-либо. Некоторые сгенерированные файлы требуются проекту или намеренно фиксируются в репозитории. Оставьте такие файлы под управлением версиями, если они нужны проекту.
Добавление сгенерированной папки в .gitignore
В корне репозитория создайте или откройте файл с именем .gitignore в текстовом редакторе. Finder может создавать папки и перемещать файлы, но он не предоставляет средств управления игнорированием Git; Git считывает шаблоны игнорирования из .gitignore и связанной конфигурации. Добавьте правило для выходного каталога, указав фактический путь относительно файла .gitignore. Например:
/build/
Косая черта в начале привязывает этот шаблон к корню репозитория, а косая черта в конце указывает на каталог. Если сгенерированный вывод находится во вложенной папке, укажите путь к ней, например /app/generated/. В документации по gitignore объясняется сопоставление шаблонов и отмечается, что правила уровня всего проекта должны находиться в .gitignore, чтобы ими можно было делиться с другими клонами.
Для локальной сгенерированной папки, которая не должна влиять на других участников, работающих с репозиторием, добавьте соответствующее правило в .git/info/exclude. Git описывает этот файл как альтернативу .gitignore, действующую только для конкретного репозитория. Используйте закоммиченное правило .gitignore, когда вывод генерируется для всех участников проекта и должен быть исключен для каждого из них.
Проверка правила и обработка уже отслеживаемых файлов
Откройте Терминал и перейдите в каталог репозитория. Проверьте статус, а затем спросите у Git, какое правило применяется к сгенерированному пути:
git status --short
git check-ignore -v build/example-file
Замените build/example-file путем, существующим внутри вашей выходной папки. Параметр -v выводит совпавшее правило игнорирования и файл, в котором оно содержится. Если Git сообщает об отсутствии совпадений, проверьте путь и шаблон: пути в .gitignore интерпретируются относительно расположения этого файла, а само правило может переопределяться другим подходящим правилом. В справочнике по check-ignore от Git описано, как проверять совпадения правил игнорирования.
Правило игнорирования не прекращает отслеживание файлов, которые уже закоммичены или проиндексированы в Git. Git явно указывает, что правила игнорирования не затрагивают отслеживаемые файлы. Чтобы удалить ранее отслеживаемый сгенерированный файл из индекса, оставив локальную копию на месте, используйте команду git rm --cached с точным путем, а затем проверьте изменения перед коммитом. Например:
git rm --cached build/example-file
git status --short
Это удалит из индекса Git только указанный файл; команда не отменяет автоматическое отслеживание каждого файла в каталоге. Перед коммитом изменений проверьте вывод команды status, особенно если вы собираетесь прекратить отслеживание всего дерева вывода. В руководстве GitHub по игнорированию файлов также объясняется различие между локальными исключениями и общими правилами .gitignore.
Использование Finder для проверки имен, а не для применения правил Git
Finder может упростить проверку типов файлов: выберите Finder > Настройки > Дополнения и включите параметр Показывать все расширения имен файлов. Это поможет отличить исходный файл от сгенерированного, если их имена похожи. Apple отмечает, что в противном случае расширения могут быть скрыты, и не рекомендует изменять расширение имени файла просто для смены формата файла. См. инструкции Apple по отображению или скрытию расширений имен файлов.
Таким образом, надежное разделение выглядит следующим образом: Finder предоставляет видимую папку для сгенерированного вывода, инструмент сборки производит запись в нее, а правила игнорирования Git исключают подходящие неотслеживаемые файлы из контроля версий. Проверяйте фактический путь вывода и статус Git каждый раз, когда меняется конфигурация сборки проекта.
Источники
Игнорирование файлов — GitHub Docs
Отображение или скрытие расширений имен файлов на Mac — Apple