2015-12-01 3 views
0

Мне нравится держать мой домашний каталог под управлением версии, отслеживать изменения в файлах запуска Bash, различных файлах конфигурации и т. Д. У меня есть файл ~/.gitignore, который игнорирует все , а затем различными линиями, которые говорят Git какие именно файлы я хочу, чтобы отслеживать:Git репозиторий в подкаталоге читает .gitignore из родительского каталога

/* 
!.bash* 
.bash_history 
!.ssh/ 
.ssh/* 
!.ssh/config 

Тогда у меня есть несколько Git репозиториев, размещенных в моей домашней директории, скажем, ~/DEV/проект /.

Вот моя проблема. На моем Linux-поле у ​​меня нет проблем с этими двумя репозиториями - они не конфликтуют.

[~/dev/project] $ git init . 
Initialized empty Git repository in ~/dev/project/.git/ 
[~/dev/project] $ touch test 
[~/dev/project] $ git status 
On branch master 

Initial commit  
Untracked files: 
(use "git add <file>..." to include in what will be committed) 
test  
nothing added to commit but untracked files present (use "git add" to track) 

Но на моем ноутбуке Mac (El Capitan) они конфликтуют. Репо в подкаталоге читает .gitignore из домашней директории, и первое правило, игнорировать все («/ *») прикладывается:

[~/dev/project] $ git init . 
Initialized empty Git repository in ~/dev/project/.git/ 
[~/dev/project] $ touch test 
[~/dev/project] $ git status 
On branch master 

Initial commit  
nothing to commit (create/copy files and use "git add" to track) 
[~/dev/project] $ mv ~/.gitignore ~/.gitignore.tmp 
[~/dev/project] $ git status 
On branch master 

Initial commit  
Untracked files: 
(use "git add <file>..." to include in what will be committed) 
test 
nothing added to commit but untracked files present (use "git add" to track) 

Я не могу понять, почему это происходит , Linux box - Debian (стабильный), Git v.2.1.4; El Capitan - Git v. 2.6.2 (последний).

ответ

0

Оказалось, что файл ~/.gitignore использовался как глобальный исключающий файл git, но свойство не было установлено в глобальной конфигурации (~/.gitconfig), а не в локальной конфигурации (~/.git/конфигурации), а где-то еще, как-то (а "суперглобальный"):

$ git config --global --list | grep "core\.excludesfile" 

$ git config --local --list | grep "core\.excludesfile" 

$ git config --list | grep "core\.excludesfile" 
core.excludesfile=~/.gitignore 

Переопределелив это "глобально", я установил его:

$ git config --global core.excludesfile "" 
$ git config --list | grep "core\.excludesfile" 
core.excludesfile=~/.gitignore 
core.excludesfile= 
Смежные вопросы