Как я могу предотвратить появление .gitignore в списке неотслеживаемых файлов? - PullRequest
948 голосов
/ 20 апреля 2009

Я только что сделал git init в корне моего нового проекта.

Затем я создал файл .gitignore.

Теперь, когда я набираю git status, .gitignore файл появляется в списке файлов без отслеживания. Почему это так?

Ответы [ 19 ]

917 голосов
/ 20 апреля 2009

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

Итак, добавьте его в свой репозиторий, он не должен быть проигнорирован.

Если вы действительно хотите, вы можете добавить .gitignore в файл .gitignore, если вы не хотите, чтобы он был зафиксирован. Однако в этом случае, вероятно, лучше добавить игнорирующие элементы в .git/info/exclude, специальный локальный файл checkout, который работает так же, как .gitignore, но не отображается в «git status», поскольку он находится в папке .git.

См. Также https://help.github.com/articles/ignoring-files

273 голосов
/ 20 апреля 2009

Если вы хотите сохранить список игнорируемых файлов вне вашего Git-дерева, вы можете использовать файл .git / info / exclude . Применяется только к вашей кассе репо.

75 голосов
/ 20 апреля 2009

Вы можете вставить строку ".gitignore" в свой файл .gitignore. Это приведет к тому, что файл ".gitignore" будет игнорироваться git. Я на самом деле не думаю, что это хорошая идея. Я думаю, что файл игнорирования должен контролироваться версией и отслеживаться. Я просто выкладываю это для полноты.

51 голосов
/ 10 июня 2009

Вы также можете иметь глобальный пользовательский файл git .gitignore, который будет автоматически применяться к всем вашим репозиториям. Это полезно для файлов IDE и файлов редактора (например, swp и *~ файлов для Vim). Измените расположение каталогов в соответствии с вашей ОС

  1. Добавить в ~/.gitconfig файл

    [core]
    excludesfile = /home/username/.gitignore
    
  2. Создание файла ~/.gitignore с шаблонами файлов, которые следует игнорировать

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

Каждый раз, когда вы копируете, инициализируете или клонируете репо, ваш глобальный файл gitignore также будет использоваться.

42 голосов
/ 09 февраля 2011

Если кто-то уже добавил .gitignore к вашему репо, но вы хотите внести в него некоторые изменения и игнорировать эти изменения, сделайте следующее:

git update-index --assume-unchanged .gitignore

Источник .

37 голосов
/ 20 апреля 2009

После добавления файла .gitignore и его фиксации он больше не будет отображаться в списке «неотслеживаемых файлов».

git add .gitignore
git commit -m "add .gitignore file"
git status
20 голосов
/ 25 сентября 2009

Просто если у кого-то еще такая же боль, как и у нас. Мы хотели исключить файл, который уже был зафиксирован.

Этот пост был намного полезнее: работа с .git / info / исключить слишком поздно

В частности, вам нужно игнорировать файл, на самом деле используйте команду git remove См. git rm (http://www.kernel.org/pub/software/scm/git/docs/git-rm.html)

Вы проверяете это, идя

git rm --dry-run *.log
(если вы хотите исключить все файлы журнала)

это выведет то, что будет исключено, если вы запустите его.

тогда

вы запускаете его, идя

git rm *.log
(или по любому пути к имени файла / выражению, которое вы хотите)

Затем добавьте строку *.log в файл .gitignore.

15 голосов
/ 12 июня 2009

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

Так как .gitignore является неотслеживаемым файлом, он может быть проигнорирован git, когда вы поместите его в .gitignore!

Итак, ответ прост: просто добавьте строку:

.gitignore # Ignore the hand that feeds!

в ваш файл .gitignore!

И, вопреки ответу Августа, я должен сказать, что файл .gitignore не должен находиться в вашем хранилище. Просто бывает, что это может быть, что часто удобно. И, вероятно, это правда, что по этой причине .gitignore был создан как альтернатива .git / info / exclude, у которого нет возможности отслеживания в хранилище. В любом случае, как вы используете ваш файл .gitignore, полностью зависит от вас.

Для справки, обратитесь к справочной странице gitignore (5) на kernel.org.

15 голосов
/ 20 апреля 2009

Идея состоит в том, чтобы поместить файлы, относящиеся к вашему проекту, в файл .gitignore и (как уже упоминалось) добавить его в репозиторий. Например, .pyc и .o файлы, журналы, которые создает набор тестов, некоторые приборы и т. Д.

Для файлов, которые создаются вашей собственной установкой, но которые не обязательно будут отображаться для каждого пользователя (например, .swp файлы, если вы используете vim, скрытые каталоги ecplise и т.п.), вы должны использовать .git/info/exclude (как уже упоминалось).

14 голосов
/ 01 июля 2014

Прежде всего, как уже говорили многие другие, ваш .gitignore должен отслеживаться Git (и поэтому не должен игнорироваться). Позвольте мне объяснить, почему.

(TL; DR: зафиксировать файл .gitignore и использовать global .gitignore для игнорирования файлов, созданных вашей IDE или операционной системой)

Git, как вы, наверное, уже знаете, распределенная система управления версиями . Это означает, что он позволяет вам переключаться между различными версиями (даже если разработка разошлась по разным ветвям), а также позволяет нескольким разработчикам работать над одним проектом.

Хотя отслеживание вашего .gitignore также имеет преимущества при переключении между снимками, наиболее важной причиной для его фиксации является то, что вы захотите поделиться файлом с другими разработчиками, работающими над тем же проектом. Зафиксировав файл в Git, другие участники автоматически получат файл .gitignore при клонировании хранилища, поэтому им не придется беспокоиться о случайной фиксации файла, который не должен быть зафиксирован (например, файлы журналов, каталоги кеша) , учетные данные базы данных и т. д.). И если в какой-то момент проект .gitignore будет обновлен, они могут просто внести эти изменения вместо того, чтобы редактировать файл вручную.

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

  • Файлы и папки, созданные вашей операционной системой или IDE, должны быть помещены в global .gitignore. Преимущество заключается в том, что .gitignore применяется ко всем репозиториям на вашем компьютере, поэтому вам не нужно повторять это для каждого репозитория. И он не используется другими разработчиками, поскольку они могут использовать другую операционную систему и / или IDE.
  • Файлы, которые не относятся ни к .gitignore проекта, ни к глобальному .gitignore, могут быть проигнорированы с помощью явного репозитория , исключенного из your_project_directory/.git/info/exclude. Этот файл не будет передан другим разработчикам и предназначен для этого единственного хранилища
...