Я понимаю, что файл .gitignore скрывает указанные файлы из системы управления версиями Git. У меня есть проект (LaTeX), который генерирует много дополнительных файлов (.auth, .dvi, .pdf, журналы и т. Д.) Во время работы, но я не хочу, чтобы они отслеживались.
Я знаю, что я мог (возможно, должен) сделать так, чтобы все эти файлы были помещены в отдельную подпапку в проекте, так как я мог тогда просто игнорировать папку.
Тем не менее, есть ли способ сохранить выходные файлы в корне дерева проекта и использовать .gitignore, чтобы игнорировать все, кроме файлов, которые я отслеживаю с помощью Git? Что-то вроде
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Ответы:
источник
wp/
), но я не хочу игнорировать некоторые файлы глубоко в этой папке (напримерwp/path/to/some/location/*
). Единственный способ заставить его работать, это сделатьgit add -f wp/path/to/some/location/*
!*/
исключение Симонта!*/
вся разница в моих тщетных попытках заставить.gitignore
файл работать. Большое спасибо.Если вы хотите игнорировать все содержимое каталога, кроме одного файла внутри него, вы можете написать пару правил для каждого каталога в пути к файлу. Например .gitignore, чтобы игнорировать папку pippo, кроме как в pippo / pluto / paperino.xml
.gitignore
источник
foo
иfoo/*
это не одно и то же. Чтобы это работало, вам нужно использоватьfoo/*
для базовой папкиВы хотите использовать
/*
вместо*
или*/
в большинстве случаевИспользование
*
допустимо, но работает рекурсивно. Это не будет смотреть на каталоги с тех пор. Люди рекомендуют!*/
снова использовать белые каталоги, но на самом деле лучше поместить в черный список папку с/*
Приведенный выше код будет игнорировать все файлы , за исключением
.gitignore
,README.md
,folder/a/file.txt
,folder/a/b1/
иfolder/a/b2/
и все , содержащимся в этих последних двух папках. (А.DS_Store
и*.log
файлы будут игнорироваться в этих папках.)Очевидно, я мог бы сделать, например,
!/folder
или!/.gitignore
тоже.Более подробная информация: http://git-scm.com/docs/gitignore
источник
.DS_Store
файлы не игнорируются, но через командную строку это не проблема. Чтобы обойти это, я должен был перейти**/.DS_Store
ниже всех других правил./*
то же самое!/nested/folder/*
(или эквивалент!/nested/folder
), не делая!/nested/
или!/nested
сначала! (и, вероятно,/nested/*
между). Трюк, который нужно запомнить: если вы вносите в белый список глубоко вложенную подпапку, вам необходимо полностью зачеркнуть детей в каждой подпапке, и эти черные списки будут заканчиваться «звездочкой-Немного конкретнее:
Пример: игнорировать все в
webroot/cache
- но сохранитьwebroot/cache/.htaccess
.Обратите внимание на косую черту (/) после
cache
папки:FAILS
РАБОТАЕТ
источник
источник
Чтобы игнорировать некоторые файлы в каталоге, вы должны сделать это в правильном порядке :
Например, игнорируйте все в папке «application», кроме index.php и в папке «config», обратите внимание на порядок .
Вы должны отрицать, что хотите сначала.
FAILS
application/*
!application/config/*
!application/index.php
РАБОТАЕТ
!application/config/*
!application/index.php
application/*
источник
git status
.gitignore
git status
не собираюсь рассказывать вам, на что он смотрит и что игнорируется, то как вы можете узнать, работает ли это?Вы можете использовать
git config status.showUntrackedFiles no
и все неотслеживаемые файлы будут скрыты от вас. Смотритеman git-config
подробности.источник
Чтобы исключить папку из .gitignore, можно сделать следующее.
Это будет игнорировать все файлы / подпапки внутри,
bower_components
кроме/highcharts
.источник
Есть множество похожих вопросов по этому поводу, поэтому я выложу то, что написал ранее:
Единственный способ заставить это работать на моей машине - это сделать так:
Обратите внимание, как вы должны явно разрешить контент для каждого уровня, который вы хотите включить. Так что, если у меня есть подкаталоги 5 глубоко под темами, мне все еще нужно разобрать это.
Это из комментария @ Ярина здесь: https://stackoverflow.com/a/5250314/1696153
Это были полезные темы:
Я тоже пробовал
а также
**/wp-content/themes/**
или
/wp-content/themes/**/*
Ничто из этого не сработало для меня. Много следов и ошибок!
источник
У меня была проблема с подпапкой.
Не работает:
Работает:
источник
Я перепробовал все ответы, приведенные выше, но у меня не получилось. Прочитав документацию gitignore ( здесь ), я обнаружил, что если вы сначала исключите папку, то имена файлов в подпапке не будут проиндексированы. Поэтому, если впоследствии вы используете восклицательный знак для включения файла, он не будет найден в индексе и, следовательно, не будет включен в ваш git-клиент.
Это был способ найти решение. Я начал с добавления исключений для всех подпапок в моем дереве папок, чтобы оно заработало, что является адской работой. После этого мне удалось сжать подробную конфигурацию до конфигурации ниже, что немного противоречит документации.
Рабочая .gitignore:
В результате я вижу в своем git-клиенте, что только два файла в папке Pro / 3rdparty / domain / modulename / готовятся к следующему коммиту, и это именно то, что я искал.
А если вам нужно внести в белый список несколько подпапок одной и той же папки, сгруппируйте строки восклицательного знака под оператором exclude следующим образом:
Иначе это не будет работать как ожидалось.
источник
Вот что сработало для меня, я хотел добавить в репозиторий только один плагин Cordova:
источник
Я знаю, что опаздываю на вечеринку, но вот мой ответ.
Как сказал @Joakim, чтобы игнорировать файл, вы можете использовать что-то вроде ниже.
но если файл находится во вложенных каталогах, то немного сложно написать правила вручную.
Например, если мы хотим пропустить все файлы в
git
проекте, но не в том, вa.txt
котором он находитсяaDir/anotherDir/someOtherDir/aDir/bDir/cDir
. Тогда наши.gitignore
будут примерно такимиПриведенный выше
.gitignore
файл пропустит все каталоги и файлы, кроме!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Как вы могли заметить, эти правила сложно определить.
Чтобы решить эту проблему, я создал простое консольное приложение под названием git-do-not-ignore, которое сгенерирует правила для вас. Я разместил проект в github с подробной инструкцией.
Пример использования
Вывод
Там также простой веб - версия доступна здесь
Спасибо.
источник
У меня есть Jquery и Angular от беседки. Бауэр установил их в
Минимизированный jquery находится внутри
dist
каталога, а angular находится внутриangular
каталога. Мне нужно было только свернутые файлы для передачи на github. Некоторое вмешательство в .gitignore, и это то, что мне удалось наколдовать ...Надеюсь, кто-то может найти это полезным.
источник
Вот как я это сделал:
Используйте
gig status -u
для рекурсивного просмотра отдельных файлов в неотслеживаемых каталогах -git status
вы увидите только папки, которые могут заставить вас думать, что все внутри них отслеженоисточник
Простое решение, если вам нужно игнорировать все, кроме нескольких файлов и нескольких корневых папок:
Магия в том, что
/*
(как описано выше) игнорирует все в (корневой) папке, но НЕ рекурсивно.источник
У меня также были некоторые проблемы с отрицанием отдельных файлов. Я смог их зафиксировать, но моя IDE (IntelliJ) всегда жаловалась на игнорируемые файлы, которые отслеживаются.
Отображены два файла, которые я исключил таким образом:
В конце концов, это сработало для меня:
Ключ был отрицанием папки в
typo3conf/
первую очередь.Кроме того, похоже, что порядок утверждений не имеет значения . Вместо этого вам нужно явно отменить все подпапки, прежде чем вы сможете отменить отдельные файлы в нем.
Папка
!public/typo3conf/
и содержимое папкиpublic/typo3conf/*
- это две разные вещи для .gitignore.Отличная тема! Эта проблема беспокоила меня некоторое время;)
источник
Пока у меня ничего не получалось, потому что я пытался добавить одну банку из lib.
Это не сработало:
Это сработало:
источник
Я получил это работает
источник
Имел такую же проблему, как ОП, но ни один из 10 лучших ответов не сработал .
Я наконец узнал следующее
Неверный синтаксис:
Правильный синтаксис:
Пояснение со страницы руководства gitignore :
Расширенный пример:
$ дерево.
$ cat .gitignore
$ git status --untracked-files --ignored
источник
Суть
И, вероятно, включают в себя:
Ссылка
С https://git-scm.com/docs/gitignore :
источник
Кажется, я нашел то, что сработало для меня, о чем никто не упомянул.
По сути, это, кажется, сводит на нет подкаталог от игнорирования, вам нужно иметь две записи, одну для самого подкаталога,
!subdir/
а затем другую, которая распространяется на все файлы и папки в нем.!subdir/**/*
источник