Ответ 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 - выбрать его.
Итак, поскольку вам нужна глобальная конфигурация, вам нужно указать абсолютный путь.