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

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

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

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

Ответы [ 19 ]

10 голосов
/ 19 июля 2011

Не упустите следующую «проблему». Иногда вы хотите добавить каталоги, но в них нет файлов. Простое решение - создать .gitignore со следующим содержимым:

*

Это выглядит нормально, пока вы не поймете, что каталог не был добавлен (как и ожидалось в вашем хранилище. Причина в том, что .gitignore также будет игнорироваться, и, следовательно, каталог пуст. как то так:

*
!.gitignore
8 голосов
/ 09 июня 2009

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

обновить этот файл

.git/info/exclude 

с подстановочным знаком или именем файла

*pyc
*swp
*~
4 голосов
/ 06 февраля 2014

В моем случае я хочу исключить существующий файл. Только изменение .gitignore не работает. Я следовал за этими шагами:

git rm --cached dirToFile/file.php
vim .gitignore
git commit -a

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

3 голосов
/ 04 октября 2016

Если вы уже зарегистрировались в .gitignore и хотите игнорировать его изменения, ознакомьтесь с этим ответом :

Попробуйте использовать эту команду:

git update-index --assume-unchanged FILENAME_TO_IGNORE

Чтобы отменить его (если вы хотите зафиксировать изменения в нем), используйте:

git update-index --no-assume-unchanged

UPDATE

Вот как вывести список «предположить, что без изменений» файлов в текущей Каталог:

git ls-files -v | grep -E "^[a-z]"

Поскольку опция -v будет использовать строчные буквы для «предположить, что без изменений» файлы.

3 голосов
/ 30 декабря 2009

Перейдите в базовый каталог вашего git repo и выполните следующую команду:

echo '\\.*' >> .gitignore

Все точечные файлы будут игнорироваться, включая этот надоедливый .DS_Store, если вы на Mac.

1 голос
/ 29 августа 2016

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

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

Чтобы противодействовать этому, мы можем сделать следующее:

  1. Исходный .gitignore должен отражать соглашение в команде (ах),
  2. После того, как он был нажат, необходимо защитить .gitignore, добавив запись .gitignore и повторить это изменение еще раз. Таким образом, файл .gitignore будет " загерметизирован ".

Файл " загерметизированный " .gitignore может быть изменен только локально, без передачи этих изменений другим членам команды. Однако, если изменение широко согласовано во всей группе (ах), то его можно «распечатать», изменить и затем «запечатать» снова. Это не может быть сделано по ошибке, только намеренно.

К сожалению, вы не можете быть на 100% защищены от глупости, но таким образом вы сделали все возможное, чтобы не допустить глупостей.

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

Использование .git/info/exclude здорово, когда вы ничего не можете сделать с настройками инфраструктуры, просто прикрываете себя **, чтобы не ошибиться.

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

1 голос
/ 17 марта 2014

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

Если бы это называлось .the_list_of_ignored_files, это могло бы быть немного более очевидным.

Аналогия - это список дел, которые вы НЕ хотите делать. Если вы не перечислите их где-то, это какой-то список дел, о которых вы не узнаете.

1 голос
/ 13 марта 2013

Вполне возможно, что конечный пользователь хочет, чтобы Git игнорировал файл ".gitignore" просто потому, что определенные папки IDE, созданные Eclipse, вероятно, не совпадают с NetBeans или другой IDE. Таким образом, чтобы сохранить антагонистичность исходного кода в среде IDE, легко упростить пользовательское игнорирование git, которое не будет доступно всей команде, поскольку отдельные разработчики могут использовать разные IDE.

0 голосов
/ 05 октября 2012

Я обнаружил, что лучшее место для настройки игнорирования надоедливых файлов .DS_Store - файл .git/info/exclude.

Кажется, IntelliJ делает это автоматически, когда вы настраиваете в нем git-репозиторий.

...