2013-09-13 2 views
3

мой .gitignore:'!' не исключает файл в .gitignore файл

.DS_Store 
temp 
!temp/script.txt 

Однако, когда я git status не отображает каталог temp/, чтобы указать, что script.txt не в постановке. Он отображает только .gitignore файл:

# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: .gitignore 

Я просто обучение мерзавца. Любая идея, где я ошибаюсь?

+0

Вы не можете использовать '.gitignore', чтобы игнорировать файл, который уже был версией Git. – jszakmeister

+0

@jszakmeister не имеет значения здесь – sehe

+0

@sehe Возможно, вы правы (именно поэтому я не писал его как ответ), но двойной отрицательный «он не отображает каталог temp /, чтобы указать, что script.txt а не в поэтапном «звучит так, будто это часть рабочего дерева. – jszakmeister

ответ

3

Заменить temp с:

temp/* 

Это игнорирует все файлы в каталоге. В большинстве случаев temp, temp/ и temp/* все работают одинаково, потому что в первых двух случаях каталог игнорируется, а в третьем случае Git не отслеживает пустые каталоги. Таким образом, сама директория будет проигнорирована.

Чтобы проиллюстрировать это, это, по существу, что происходит, когда temp/ имеет temp1.txt temp2.txt temp3.txt:

temp # anything with the name of "temp"; a directory, a symlink, a file. 
temp/ # whole of temp dir 
temp/* # temp/temp1.txt temp/temp2.txt temp/temp3.txt 

Таким образом, третий случай будет работать в вашем случае.

Образец отрицания должен быть размещен после рисунка, который его покрывает. В этом случае !temp/script.txt должен наступить после temp/*. В противном случае он не будет применяться.

Итак, ваш конечный файл .gitignore должен выглядеть следующим образом:

.DS_Store 
temp/* 
!temp/script.txt 
+0

Обратите внимание, что вам придется очень внимательно следить за порядком включений/исключений. Кроме того, 'temp' игнорирует файл по имени' temp', 'temp /' игнорирует только (любые) файлы в этом каталоге – sehe

+0

@sehe yep, я обязательно добавлю это. Я исключил это, чтобы предотвратить путаницу , – wei2912

0

Примечание каталоги не версионируются в мерзавца

Используйте .gitignore из

temp/* 
!temp/script.txt 

Обратите внимание, что порядок очень важно (сначала у меня было это неправильно, поэтому я почти не сделал этого, не может быть сделано)

Смежные вопросы