.gitignore_global не работает, даже .gitconfig показывает .gitignore_global

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

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

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

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

Каталог моего репозитория проектов E:/Inspiration/server/expl_california, а .gitignore_global находится в моем домашнем каталоге (где присутствует файл .gitconfig.).

Я проверил эту ссылку, но я не нашел ничего полезного.

Ответ 1

Путь к глобальному 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 в каждом репозитории, а git - выбрать его.

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