git игнорирует.шаблон gitattributes по
у меня такая структура каталогов:
root/
.git
deploy/
Site/
blah/
more_blah/
something.local
else.development
Rakefile
.gitattributes
Edit: чтобы уточнить вышеизложенное, каталоги имеют трейлинг / и дети отступы под каталогом, так что blah и more_blah - каталоги, но Rakefile и .gitattributes имеют файлы, но все четверо являются детьми Site.
я git-archive С вот так:
git archive --format=tar --prefix=git-v0.0.1/ v0.0.1 | gzip > ../deploy/git-v0.0.1.tar.zip
но какой бы шаблон я ни вставил .gitattributes ПО, в результирующий архив всегда содержит Rakefile. Я пробовал:
- Rakefile
- Сайт / Rakefile
- * / Rakefile
- ./Rakefile с
- Rakefile*
- *
ни один из них не работает так, как я ожидал. Кто-нибудь хочет указать на очевидное, но неочевидное для меня решение? Любая помощь очень ценится.
мои извинения за неясность.
- я сказал the шаблон я использовал, похоже, не работает, но я использую "экспорт-игнорировать" по образцу.
-
Rakefileэто не каталог, а просто файл -
The .файл gitattributes успешно удаляет другие шаблоны из архива,это не так, из - за переименовав определенные файлы, но не архивируя фиксацию с переименованием, я получал хорошие результаты. Моя вина! : SRakefileне единственный используемый шаблон, но единственный, который не работает. Он не работает независимо от того, имею ли я его самостоятельно или с другими шаблонами и в любом месте файла.
это мой .gitattributes (сидит в директории Site)
Rakefile export-ignore
*.local export-ignore
*.development export-ignore
*.staging export-ignore
6 ответов
не уверен, что это общий случай, но у меня были проблемы с исключением папки tests из исходного дерева, которое имеет много вложенных уровней папок. Если бы я написал только эту строчку .gitattributes по
tests/* export-ignore
Он не работал, и весь каталог оставался в архиве. Решение состояло в том, чтобы добавить подстановочные знаки для всех уровней subdirs:
tests/* export-ignore
tests/*/* export-ignore
tests/*/*/* export-ignore
tests/*/*/*/* export-ignore
tests/*/*/*/*/* export-ignore
С этими строками
Я считаю, что @Jefromi дал информацию, необходимую для меня, чтобы решить эту проблему с его комментариями, но слишком скромный, чтобы взять кредит, и я хотел бы сохранить свой рейтинг принятия на 100% (совершенно правильно), поэтому я дам ответ здесь:
хорошо, две вещи были необходимы. --worktree-attributes сам по себе не работал, но когда я переехал .gitattributes файл в корневой каталог из каталога сайта, затем он работал. Опять,книга Git подразумевает, что файл не должен быть в корне для него работать "... (обычно корень вашего проекта)", поэтому я чувствую себя немного разочарованным этими документами (на этот раз). Я также думаю, что это не то, что вы думаете, чтобы выбрать в файле, когда .gitignore просто работает, ИМО.
для каталогов у меня были проблемы с разными версиями Git, поэтому мне пришлось включить запись и С и без подготовки Слэш:
- foo/bar экспорт-игнорировать
- foo / bar / export-игнорировать
где foo / bar относительно того, где я побежал архив git, но фактическое .gitattributes был в корневом каталоге проекта в дополнение к --worktree-attributes как отметил выше.
Примечание: чтобы игнорировать каталог, вам нужно иметь'/' в конце каталога.
Rakefile/
для архива, как Arrowmaster упоминает в ответ, а как Pro Git детали книги вам понадобится :
Rakefile/ export-ignore
с Git версии 1.7.2.5, которая по умолчанию используется в Debian squeeze (отсюда и этот пост), там не должен быть косой чертой в конце, чтобы игнорировать каталог. Поэтому, чтобы игнорировать deploy dir в приведенном выше вопросе, необходимо использовать следующую строку (без косой черты):
deploy export-ignore
это противоречит документации (man gitattributes / man gitignore) и книге git. Документация gitattributes ссылается на gitignore. Интересно, что dirs с косой чертой (deploy/) работа в .файла.gitignore
Я не тестировал более поздние версии git.
вы пытаетесь включить файлы в репозиторий, но не в архив, созданный из git archive? Если такой синтаксис .gitattributes файлы, неправильно. Если нет, то .gitattributes не то, что вы должны использовать.
чтобы исключить файлы из архива, созданного git archive вы должны поместить следующее в .gitattrubutes.
Rakefile export-ignore