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