2013-08-05 2 views
0

У меня возникли проблемы с моим .gitignore. У меня есть дерево каталогов, например, так:Использование .gitignore

/djangoproject 
    venv 
     bin 
      startgunicorn.sh 
     djo 
    www 
     static 
     analytics 
    .git 
     .gitignore 

Мой .gitignore гласит:

../www/analytics 
../venv/bin 
../venv/build 
../venv/include 
../venv/lib 
../venv/local 
*.pyc 

Когда я

git add ../* или git add -A

git push

Я не хочу startgunicorn.sh или мой analytics dir для толкаемого, но я хочу djo и static будет. Этого не происходит - мой файл gunicorn.sh продолжает меняться на локальную машину. Где моя ошибка?

ответ

4

Я никогда не видел, чтобы кто-то размещал файл .gitignore в подкаталоге .git. Насколько я знаю, это должно быть в корне, если вы хотите применить правила ко всему хранилищу.

GitHub сказать следующее:

Обратите внимание, что вы можете создать .gitignore в любой подпуть иметь свои правила применяются на этом пути. Иногда пустой файл .gitignore используется в качестве заполнителя для пустого пути, например, чтобы заставить git генерировать log/path для вашей среды разработки.

Идя по этой логике, все эти правила будут применяться к папке .git вниз. Я вижу, что вы пытаетесь сделать, но я никогда не видел, чтобы это делалось до этого.

Я бы поставил .gitignore в корень хранилища, и он выглядит следующим образом:

www/analytics 
venv/bin 
venv/build 
venv/include 
venv/lib 
venv/local 
*.pyc 

Я бы ожидать, что делать правильные вещи.

Кроме того, стоит иметь это в виду:

Обратите внимание, что мерзавец не будет игнорировать файл, который уже был гусеничный перед правило было добавлено к этому файлу, чтобы его игнорировать. В этом случае файл должен быть просто не отслеживаются, как правило, с мерзавец погонных --cached файла

Вы, возможно, должны сделать это, если вы добавили старые версии этих файлов, которые вы хотите игнорировать.

+1

Поздно к партии, но для тех, кто стоит дома, начиная с git 1.8.2, '**' может использоваться для игнорирования всех файлов в папке до бесконечной глубины. Например., 'venv/**'. См. [Здесь] (http://stackoverflow.com/questions/1470572/gitignore-ignore-any-bin-directory). – franklin

0

Возможно, попробуйте разместить .gitignore в каталоге основного проекта (где находится каталог .git) и удалить «../» в начале путей.

Если это не поможет попробуйте добавить

venv/bin/* 

к вашему .gitignore.

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