2015-09-09 2 views
12

Я создал файл .gitignore_global и сохранил его в каталоге, где у меня есть файл .gitconfig..gitignore_global не работает, даже .gitconfig показывает .gitignore_global

После этого я использовал эту команду.

git config --global core.excludefile .gitignore_global 

Затем я проверил мой файл .gitconfig с помощью команды

cat .gitconfig 

Это показывает мне результат как

[user] 
     email = [email protected] 
     name = Hemant Parihar 
[gui] 
     recentrepo = C:/Users/heman/gitprojects 
     recentrepo = E:/Inspiration/developerquery 
[filter "lfs"] 
     clean = git-lfs clean %f 
     smudge = git-lfs smudge %f 
     required = true 
[core] 
     excludesfile = .gitignore_global 

Это ясно показывает мне в [основной] разделе, есть .gitignore file. Но в моем репозитории проекта я создал файл, который следует игнорировать при настройке .gitignore_global. Но этого не должно быть. Но когда я использовал локальный файл .gitignore для своего проекта, он отлично работает и игнорирует файлы, которые не следует отслеживать.

Мой проект каталога репозитория E:/Вдохновение/сервер/explore_california в то время как .gitignore_global находится в моем домашнем каталоге (где .gitconfig файл присутствует.).

Я проверил this link, но я не нашел ничего полезного.

+0

Любые особые причины не использовать локальный файл .gitignore? –

+0

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

+0

Не очень хорошая идея для совместной работы. У них будет локальный .gitignore, но не ваш глобальный. Пожалуйста, используйте его осторожно.Возможно, то, что вы ищете, помещает ~/перед вашей записью .gitignore_global в файл .gitconfig: 'excludesfile = ~/.gitignore_global' –

ответ

18

Путь к глобальной gitignore должен быть абсолютным, так что вы можете использовать расширение оболочки здесь и просто указать его в качестве ~/.gitignore_global:

git config --global core.excludesfile ~/.gitignore_global 

Для того, чтобы понять, что происходит, если вы не Не используйте абсолютный путь, вы должны понять, как работают git config: у каждого репозитория есть один в .git/config. Кроме того, существует глобальный ~/.gitconfig. Конфигурационные значения из обоих мест объединяются (при этом параметры локального репозитория имеют приоритет в случае конфликтов) для создания одного набора параметров настройки. Вы можете проверить их, запустив git config -l внутри локального репозитория.

Таким образом, конфигурация всегда локальна для текущего репозитория. Поэтому, когда у вас есть относительный путь к «глобальному» исключаемому файлу, этот путь интерпретируется относительно вашего репозитория.

Так с excludesfile = .gitignore_global, Git будет выглядеть в ваш локального хранилища для файла gitignore_global. И он будет использовать это как нормальный .gitignore, так и .git/info/exclude репозитория.

Итак, вы можете разместить файл .gitignore_global в каждом репозитории, и Гит его поднимет.

Так как вам нужна глобальная конфигурация, вам нужно указать абсолютный путь.

+0

yup. Это работает. но я хочу знать, почему он не работает. git config --global core.excludesfile .gitignore_global –

+0

@HemantParihar Добавлено больше объяснений о том, почему необходим абсолютный путь. – poke

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