Есть ли способ добавить каталог в Git, но исключить расширения в .gitgnore? - PullRequest
7 голосов
/ 21 января 2011

Есть ли способ добавить каталог в Git, но исключить расширения в .gitgnore?

например, когда я выполняю команду для добавления каталога, такую ​​как

git add console/*

git отвечаетс ответом

$ git add console/*
The following paths are ignored by one of your .gitignore files:
console/networkprobing.ppu
console/opsdatamodule.lrs
console/opsdatamodule.o
console/opsdatamodule.ppu
console/rcacsSystemDM.compiled
console/rcacsSystemDM.o
console/rcacsSystemTestProcs.o
console/rcacsSystemTestProcs.ppu
Use -f if you really want to add them.
fatal: no files added

Как сделать команду для автоматического исключения расширений .gitignore?Есть ли дополнительные опции для прохождения?

Ответы [ 2 ]

10 голосов
/ 23 января 2011
git add console/*

Проблема в том, что подстановочный знак раскрывается с помощью глобализации оболочки и не передается непосредственно в git, поэтому git-add действительно передается каждому файлу в каталоге консоли [1]. Поскольку git-add получает каждый файл в каталоге в качестве аргументов, он думает, что вы действительно пытаетесь добавить игнорируемый файл, поэтому есть предупреждение и подсказка использовать -f, если вы действительно пытаетесь это сделать .

Решение состоит в том, чтобы не использовать глобирование оболочки, а просто передать каталог следующим образом.

git add console

Аналогичным образом, правильный способ добавления в репозиторий всего (включая файлы, начинающиеся с '.'), За исключением игнорируемых файлов [2], заключается в использовании git add ., а не git add *.

[1] За исключением тех, которые начинаются с '.' при условии, что вы находитесь в оболочке типа sh sh и не пытаетесь выполнить это из командной строки Windows cmd.exe. Если вы используете командную строку Windows, вам следует переключиться на использование оболочки Git-Bash из msysgit или оболочки cygwin в зависимости от того, как вы установили git.
[2] .gitignore используется только для предотвращения отслеживания неотслеживаемых файлов: если файл уже отслеживается с помощью git, он будет продолжать обрабатываться в обычном режиме, пока не будет удален из репозитория. Это может быть сделано без воздействия на фактический файл с помощью git rm --cached filename.

7 голосов
/ 21 января 2011

.gitignore может принимать шаблоны шара в стиле оболочки. Так, например, если вы хотите игнорировать все .jpg файлы, вы можете добавить

# Ignore all JPEGs
*.jpg

до .gitignore. Если вы хотите игнорировать только JPEG в вашем новом каталоге, вы можете сделать

new_directory/*.jpg

Затем просто добавьте каталог как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...