У меня есть структура каталогов, как это:
.git/
.gitignore
main/
...
tools/
...
...
Внутри main и tools, и любого другого каталога, на любом уровне, может быть каталог 'bin', который я хочу игнорировать (и я хочу игнорировать все, что находится под ним). Я пробовал каждый из этих шаблонов в .gitignore, но ни один из них не работает:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Может кто-нибудь мне помочь? Первый шаблон (который, я думаю, должен работать) прекрасно работает, если я сделаю это:
/main/**/bin/**/*
Но я не хочу иметь запись для каждого каталога верхнего уровня и не хочу изменять .gitignore каждый раз, когда добавляю новый.
Это на Windows, используя последнюю версию msysgit.
РЕДАКТИРОВАТЬ: еще одна вещь, есть файлы и каталоги, которые имеют подстроку «bin» в своих именах, я не хочу, чтобы они игнорировались :)
**
Синтаксис кажется сейчас (март 2013, мерзавец 1.8.2) официально задокументированы: см мой ответ нижеОтветы:
До версии 1.8.2
**
особого значения в.gitignore
. Начиная с**
версии 1.8.2, git означает ноль или более подкаталогов (см. Примечания к выпуску ).Способ игнорировать все каталоги, называемые bin, где-либо ниже текущего уровня в дереве каталогов, с помощью
.gitignore
файла с шаблоном:На
man
странице приведен пример игнорирования каталога, вызываемогоfoo
по аналогичной схеме.Редактировать: Если у вас уже есть какие-либо папки bin в вашем git index, которые вы больше не хотите отслеживать, вам нужно явно удалить их. Git не остановит отслеживание путей, которые уже отслеживаются только потому, что теперь они соответствуют новому
.gitignore
шаблону. Выполнить удаление папки ( rm ) только из индекса ( --cached ) рекурсивно ( -r ). Пример командной строки для корневой папки bin:источник
**
в.gitignore
файлах (источник: 1.8.2 журнала изменений )bin
то же самоеbin/
?bin
будут игнорировать файлы с именем bin, аbin/
для каталогов с именем bin.gitignore
Вашей мечты , кажется:на верхнем уровне.
источник
Я думаю, что стоит упомянуть для начинающих git:
Поэтому, если вы хотите, чтобы add игнорировал некоторые каталоги в вашем локальном репозитории (которые уже существуют) после редактирования .gitignore, вы хотите запустить это в своем корневом каталоге.
Это в основном «освежит» ваше локальное хранилище и нестандартные игнорируемые файлы.
Видеть:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
источник
git add -A
коммиты, могу ли я использовать это вместо этого? и можно ли заменить точку с -A в первой строке?До этого
**
никогда не работал должным образом, но, начиная с git 1.8.2 (8 марта 2013 г.) , он явно упоминается и поддерживается:В вашем случае это означает, что эта строка теперь может поддерживаться:
источник
соответствует верхнему и нижнему регистру
источник
[B]in/
чтобы быть единственным верхним регистромBin
игнорировать только папку и разрешитьbin
коммитить в git?[B]in/
будет и совершать,Bin
иbin
.Bin/
!bin/
Я не видел, чтобы это упоминалось здесь, но это, кажется, чувствительно к регистру. Как только я перешел на / Bin, файлы были проигнорированы, как и ожидалось.
источник
bin
, нетBin
.[Bb]in
решит проблему, но ... Вот более обширный список вещей, которые вы должны игнорировать (пример списка от GitExtension):источник
Если вы ищете отличный глобальный
.gitignore
файл для любого решения Visual Studio (.NET) - я рекомендую вам использовать это: https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreAFAIK имеет самый полный
.gitignore
для .NET проектов.источник
Шаг 1: Добавьте следующее содержимое в файл .gitignore.
Шаг 2: Убедитесь, что вступили в силу
Если проблема все еще существует, то это потому, что настройки в .gitignore могут игнорировать только те файлы, которые изначально не отслеживались . Если некоторые файлы уже включены в систему контроля версий, изменение .gitignore недопустимо. Чтобы полностью решить эту проблему, вам нужно открыть Git Bash или Консоль диспетчера пакетов (см. Скриншот ниже), чтобы запустить следующие команды в корневой папке хранилища.
Тогда вопрос будет полностью решен.
источник
Буквально ни один из ответов на самом деле не работал для меня; единственный, который работал для меня, был (на Linux):
источник
bin
в подкаталогах?В качестве уведомления;
Если вы думаете, что
.gitignore
это не работает каким-то образом (добавленнаяfoo/*
в него папка, ноgit status
все равно показывающая содержимое (я) этой папки как измененное или что-то подобное), вы можете использовать эту команду;git checkout -- foo/*
источник
для 2.13.3 и выше, запись только bin в ваш файл .gitignore должна игнорировать bin и все его подкаталоги и файлы
источник
Добавление ** / bin / в файл .gitignore помогло мне (Примечание: папка bin не была добавлена в индекс).
источник
Если рисунок внутри
.gitignore
заканчивается косой чертой/
, он найдет только совпадение с каталогом.Другими словами,
bin/
будет соответствовать каталогуbin
и путям под ним, но не будет совпадать с обычным файлом или символической ссылкойbin
.Если шаблон не содержит косой черты, то , как в
bin
Git, обрабатывает его как шаблон оболочки (жадный). Так что лучше всего будет использовать простой/bin
.bin
не будет лучшим решением для этой конкретной проблемы.источник
/
?В моем случае кодирование файла gitignore было проблематичным, проверьте, является ли это UTF-8
источник