Как добавить файл в gitignore android studio

Обновлено: 02.07.2024

Мы конечно могли бы вручную добавлять нужные файлы в репозиторий, например так:

Однако это было бы очень трудоемко. Гораздо проще использовать команду:

Которая добавит все файлы в каталоге проекта.

Но что если нам не нужны абсолютно все файлы, а есть файлы например в каталоге /cache или /images или /runtime проекта, которые генерируются в процессе работы. Они не должны быть добавлены в репозиторий.

Тут нам и нужен .gitignore. Вам нужно его самим создать и разместить в корне проекта либо нужной подпапке.

Где должен находиться этот файл

Файл может находиться в корне проекта или любом подкаталоге.

Либо можно задать глобальный файл gitignore, таким образом:

Таким образом вы сможете записать в глобальный файл

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

Примеры содержимого .gitignore файла

Подробнее о шаблонах игнорирования

ШаблонПримеры соответствияПояснение*
**/logslogs/debug.log logs/monday/foo.bar build/logs/debug.logДобавьте в начало шаблона две звездочки, чтобы сопоставлять каталоги в любом месте репозитория.
**/logs/debug.loglogs/debug.log build/logs/debug.log но не logs/build/debug.logДве звездочки можно также использовать для сопоставления файлов на основе их имени и имени родительского каталога.
*.logdebug.log foo.log .log logs/debug.logОдна звездочка — это подстановочный знак, который может соответствовать как нескольким символам, так и ни одному.
*.log !important.logdebug.log trace.log но не important.log logs/important.logДобавление восклицательного знака в начало шаблона отменяет действие шаблона. Если файл соответствует некоему шаблону, но при этом также соответствует отменяющему шаблону, указанному после, такой файл не будет игнорироваться.
.log !important/.log trace.*debug.log important/trace.log но не important/debug.logШаблоны, указанные после отменяющего шаблона, снова будут помечать файлы как игнорируемые, даже если ранее игнорирование этих файлов было отменено.
/debug.logdebug.log но не logs/debug.logКосая черта перед именем файла соответствует файлу в корневом каталоге репозитория.
debug.logdebug.log logs/debug.logПо умолчанию шаблоны соответствуют файлам, находящимся в любом каталоге
debug?.logdebug0.log debugg.log но не debug10.logЗнак вопроса соответствует строго одному символу.
debug2.logdebug0.log debug1.log но не debug10.logКвадратные скобки можно также использовать для указания соответствия одному символу из заданного диапазона.
debug[01].logdebug0.log debug1.log но не debug2.log debug01.logКвадратные скобки соответствуют одному символу из указанного набора.
debug[!01].logdebug2.log но не debug0.log debug1.log debug01.logВосклицательный знак можно использовать для указания соответствия любому символу, кроме символов из указанного набора.
debug[a-z].logdebuga.log debugb.log но не debug1.logДиапазоны могут быть цифровыми или буквенными.
logslogs logs/debug.log logs/latest/foo.bar build/logs build/logs/debug.logБез косой черты в конце этот шаблон будет соответствовать и файлам, и содержимому каталогов с таким именем. В примере соответствия слева игнорируются и каталоги, и файлы с именем logs
logs/logs/debug.log logs/latest/foo.bar build/logs/foo.bar build/logs/latest/debug.logКосая черта в конце шаблона означает каталог. Все содержимое любого каталога репозитория, соответствующего этому имени (включая все его файлы и подкаталоги), будет игнорироваться
logs/ !logs/important.loglogs/debug.log logs/important.logМинуточку! Разве файл logs/important.log из примера слева не должен быть исключен нз списка игнорируемых? Нет! Из-за странностей Git, связанных с производительностью, вы не можете отменить игнорирование файла, которое задано шаблоном соответствия каталогу
logs/**/debug.loglogs/debug.log logs/monday/debug.log logs/monday/pm/debug.logДве звездочки соответствуют множеству каталогов или ни одному.
logs/*day/debug.loglogs/monday/debug.log logs/tuesday/debug.log but not logs/latest/debug.logПодстановочные символы можно использовать и в именах каталогов.
logs/debug.loglogs/debug.log но не debug.log build/logs/debug.logШаблоны, указывающие на файл в определенном каталоге, задаются относительно корневого каталога репозитория. (При желании можно добавить в начало косую черту, но она ни на что особо не повлияет.)

Что если файлы из gitignore уже добавлены в репозиторий

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

Нам придется вручную их удалить из репозитория.

Очень удобная команда bash, которая удалит из git репозитория те файлы, которые содержатся в файлах .gitignore :

То же самое для Powershell

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

Либо можно удалять файлы вручную, таким образом:

Либо если нам нужно удалить целую директорию из git, то воспользуемся следующей командой:

Либо так мы могли бы удалить все файлы с расширением .log в папке log:

Параметр --cached означает, что файлы будут удалены только из раздела "проиндексированных файлов". На диске (рабочем каталоге) они останутся нетронутыми.

Как понять, почему игнорируется конкретный файл

Запустите команду вместо path/to/file следует указать путь к файлу.

В итоге мы получим ответ, в котором содержится конкретная строка .gitignore, благодаря которой данный файл игнорируется.

какие файлы должны быть в моем .gitignore для проекта Android Studio?

Я видел несколько примеров, которые все относятся .iml но IntelliJ docs говорят, что .iml должен быть включен в систему управления версиями.

обновлено до Android Studio 3.0 Пожалуйста, поделитесь недостающими элементами в комментариях.

устаревший - для более старого формата проекта добавьте этот раздел в свой gitignore файл:

этот файл должен находиться в корневой папке проекта, а не в папке модуля проекта.

Редактировать Примечания:

начиная с версии 0.3+ кажется, вы можете commit и push *.iml и построить.Gradle в файлы. Если ваш проект на Gradle в: в новом диалоговом окне открытия/импорта, вы должны проверить "use auto import" установите флажок и отметьте радио. Все пути теперь относительны как предложил @George.

обновил ответ по @128КБ добавленные источник и @Skela предложения

также обратите внимание, что, как указано,причине файлы раздел в первую очередь полезен, когда вы создаете свой собственный собственный код с Android NDK. Если, с другой стороны, вы используете стороннюю библиотеку, которая включает эти файлы, вы можете удалить эти строки (*.о и *.Итак) от вашего .гитюдного.

Обновлено 7/2015:

формат проекта на основе каталога (.каталог идей)

этот формат используется всеми последними версиями IDE по умолчанию. Вот что вам нужно поделиться:

  • все файлы под .idea каталог в корне проекта за исключением на workspace.xml и tasks.xml файлы определенного пользователя настройки
  • все .iml файлы модулей, которые могут быть расположены в разных каталогах модулей (относится к IntelliJ IDEA)

будьте осторожны поделиться следующим:

  • артефакты Android, которые производят подписанную сборку (будут содержать пароли хранилища ключей)
  • в идее 13 и ранее dataSources.ids , datasources.xml может содержать пароли базы данных. Идея 14 решает эту проблема.

вы можете рассмотреть возможность не делиться следующим:

  • gradle.xml-файл, см. эта дискуссия
  • папка пользовательских словарей (чтобы избежать конфликтов, если другой разработчик имеет то же имя)
  • XML-файлы в разделе .idea/libraries в случае, если они генерируется из Gradle проект

устаревший формат проекта ( .ipr / .iml / .iws файлы)

  • долю в проекте и .iml файлы модуля, не разделяю на .iws файл, как он хранит пользовательские настройки

хотя эти инструкции предназначены для IntelliJ IDEA, они верны на 100% для Android Studio.

здесь .gitignore фрагмент, который включает в себя все вышеперечисленные правила:

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

  • /build
  • /.idea (с возможными исключениями, см. комментарии ответ dalewking)
  • *.iml
  • local.properties

Я думаю, что почти все согласны с /build .

если *.iml is versioned новый пользователь должен будет назвать проект точно так же, как это было, когда привержен. Поскольку это также сгенерированный файл, почему версия его в первую очередь?

на local.properties files указывает на абсолютный путь в файловой системе для SDK, поэтому он определенно не должен быть версионным.

изменить 1 добавлено .gradle игнорировать материал кэширования gradle, который не должен быть версионным (спасибо Василий Макаров).

Изменить 2 добавлено .DS_Store теперь, когда я использую Mac. Эта папка-Mac конкретные и должны не быть версионными.

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

JAVA_HOME

Из-за GWF открытие SDK Manager на панели инструментов может не обновить загрузку. Нажмите SDK Manager, загружаемые обновления не отображаются. Нажмите SDK Update Sites, это показывает, что они не могут быть успешно загружены.

Начать после установки SDK Manager Загрузите необходимые пакеты

Если загрузка не удалась, настройте агент (источник)

начало Android Studio

Включить default setting Нажмите на логотип загрузки в правом верхнем углу

Appearance & Behavior -> System Settings -> Android SDK -> На правильной странице Android SDK Location Использовать перед выбором SDK Manager Загруженная папка

这里写图片描述

Загрузите Blue Light или других агентов (Blue Light можно использовать бесплатно, но ограничено текущим использованием)

Перезагрузите после настройки Android Studio Re sync project with gradle files

В дополнение к настройке прокси, вы также можете изменить хост для научного доступа в Интернет,Ссылка ссылка 1,Ссылка 2

3. Используйте Android Studio с Github

1. Настройте git в Android Studio

в File -> Setting -> Version Control -> Git Задайте свой собственный локальный путь к git в настройках, затем нажмите «Тест», чтобы проверить правильность адреса, а затем нажмите «Применить», чтобы сохранить настройки.

这里写图片描述

2. Настройте учетную запись Github в Android Studio

в File -> Setting -> Version Control -> GitHub -> Auth Type Выберите Password, Задайте собственную учетную запись и пароль GitHub, затем нажмите «Тест», чтобы проверить правильность учетной записи, затем нажмите «Применить», чтобы сохранить настройки.

Примечание: разрыв слова соответствует началу строки, концу строки и любому переходу от слова (числа, буквы или подчеркивания) к символу, отличному от слова или наоборот.

Я знаю, что это старая тема, и вариантов, конечно, много, но я действительно предпочитаю gibo Саймона Уитакера. Он очень прост в использовании, кроссплатформенный (mac, * nix и windows) и использует репозиторий github gitignore , так что он (в основном) всегда актуален.

Убедитесь, что ваш локальный кеш обновлен:

Поиск нужного языка / технологии:

Теперь добавьте его в файл .gitignore вашего проекта:

(Убедитесь, что вы используете >> для добавления в файл .gitignore вашего проекта; один > будет перезаписать его - как я много раз делал по случайности!)

Я знаю, что это не отвечает на точный вопрос ОП, но использование gibo делает это так, что вам почти не нужно думать о вопрос "больше! .. мило! ;)

Если вы создадите проект Gradle с помощью Android Studio, файл .gitignore будет содержать следующее:

.gitignore

Я бы рекомендуем игнорировать полный каталог ".idea", поскольку он содержит пользовательские конфигурации, ничего важного для процесса сборки.

Папка проекта Gradle

Единственное, что должно быть в вашей папке проекта (Gradle) после клонирования репозитория, - это структура (по крайней мере, для тех случаев использования, с которыми я сталкивался до сих пор):

Рекомендуется зарегистрировать скрипты Gradle-оболочки (см. здесь ).

Чтобы сделать файлы Wrapper доступными для других разработчиков и сред выполнения, вам необходимо проверить их в системе контроля версий.

В основном любой файл, который автоматически регенерируется.

Хороший тест - клонировать репозиторий и посмотреть, сможет ли Android Studio интерпретировать и запустить ваш проект немедленно (сгенерировать то, чего не хватает).
Если нет, найдите то, чего не хватает, и убедитесь, что не игнорируется, а добавляется в репо.

При этом, вы можете взять пример с существующими .gitignore файлами, такими как Android one .

Я поддерживаю фиксацию папки .idea (исключая workspace.xml и tasks.xml ). Но я начинаю приходить к выводу, что файлы .iml следует игнорировать.

Откройте проект в каталоге с именем «foo», например, и вы получите foo.iml, и все это выглядит хорошо. Проблема в том, что если я просто переименую каталог в foo2 (или клонирую его в другое имя каталога) при попытке открыть проект в Android Studio, вы получите три вещи:

  • Новый файл iml named foo2.iml
  • Файл iml для вашего проекта Android будет изменен и теперь будет указывать на foo2, так как его родитель
  • .idea / modules.xml будет иметь строку, добавленную для foo2.iml, так что в нем есть как старый файл iml, так и файл для нового каталога

Я не могу найти способа помешать Android Studio выполнять генерацию этого файла iml, когда проект хранится в другом каталоге. Добавление их в систему управления версиями вызовет проблемы. Поэтому я думаю, что, возможно, мы должны игнорировать файлы * .iml и .idea/modules.xml

Это лучший способ сгенерировать .gitignore через здесь

Я бы также посоветовал не игнорировать папку .idea.

Я импортировал проект Eclipse на основе Git в Android Studio, и все прошло хорошо. Позже я хотел импортировать этот проект с помощью Git (как в первый раз) на другую машину с Android Studio, но это не сработало. Android Studio загрузила все файлы, но не смогла «увидеть» проект как проект. Я мог только открыть Git-файлы.

При первом импорте проекта (из Eclipse в Android Studio) мой старый .gitignore был перезаписан, а новый выглядел так:

  • .idea / .name
  • .idea / compiler.xml
  • .idea / copyright / profile_settings.xml
  • .idea / encodings.xml
  • .idea / library / libs.xml
  • .idea / misc.xml
  • .idea / modules.xml
  • .idea / scopes / scope_settings.xml
  • .idea / vcs.xml
  • .idea / workspace.xml

Итак, я попытался использовать пустой gitignore, и теперь это сработало. Другая Android Studio может загружать файлы и проект. Я думаю, что некоторые файлы не важны для импорта и импорта Git, но я просто счастлив, что это сработало.

Я не согласен с добавлением файлов .iml и Intellij sez для добавления папки .idea, но игнорирую .idea / workspace.xml и .idea / tasks.xml, но как насчет .idea / library /?

Я не понимаю, как имеет смысл добавить это. Он содержит список файлов XML, в котором перечислены библиотеки, о которых должен знать проект Android Studio. Предполагается, что они приходят из определенных зависимостей build.gradle, а не из файла проекта IDE.

Также содержимое одного из этих файлов выглядит следующим образом:

Не имеет смысла это делать. Что, если пользователь указал другой домашний каталог для Gradle, или если он использует другую версию Gradle, путь в .gradle/caches/artifacts-xxx будет отличаться для него (т. Е. artifacts- число, добавленное на конце, будет относиться к Gradle версия выпуска, которую вы используете.) Эти пути не универсальны, и все же советуем проверить все это в?

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

Однако, если вы сохраните какие-либо настройки IDE, такие как пользовательские настройки стиля кода, они сохраняются в папке .idea. Если вы хотите внести эти изменения в систему управления версиями, вы также должны сохранить файлы IDEA (* .iml и .idea).

Опираясь на мой обычный Android .gitignore , и после прочтения документации на веб-сайте Intellij IDEA и чтения постов в StackOverflow я создал следующий файл:

обратите внимание, что, как указывалось, раздел встроенных файлов в первую очередь полезен при создании собственного кода с помощью Android NDK. Если, с другой стороны, вы используете стороннюю библиотеку, которая включает эти файлы, вы можете удалить эти строки (* .o и * .so) из вашего .gitignore.

Обновлено 7/2015:

Вот окончательный источник из JetBrains

Формат проекта на основе каталога (каталог .idea )

Этот формат по умолчанию используется всеми последними версиями IDE. Вот что вам нужно поделиться:

  • Все файлы в каталоге .idea в корневом каталоге проекта , за исключением файлов workspace.xml и tasks.xml , которые хранят пользовательские настройки
  • Все файлы модулей .iml , которые могут быть расположены в разных каталогах модулей (относится к IntelliJ IDEA)

Будьте внимательны , сообщая следующее:

  • Артефакты Android, которые создают подписанную сборку (будут содержать пароли хранилища ключей)
  • В IDEA 13 и более ранних версиях dataSources.ids datasources.xml могут содержать пароли базы данных. IDEA 14 решает эту проблему .

Вы можете не использовать следующее:

  • файл gradle.xml, см. это обсуждение
  • папку пользовательских словарей (чтобы избежать конфликтует, если другой разработчик имеет такое же имя)
  • XML-файлы в разделе .idea/libraries , если они созданы из проекта Gradle

Формат устаревшего проекта ( .ipr / .iml / .iws файлов)

  • Предоставить общий доступ к файлу проекта .ipr и всем файлам модуля .iml , не поделиться с .iws файл, поскольку в нем хранятся пользовательские настройки

Хотя эти инструкции предназначены для IntelliJ IDEA, они верны на 100% для Android Studio.

Вот фрагмент .gitignore , который включает в себя все вышеперечисленные правила:

Читайте также: