Цитата из gitattributes(5)
:
Атрибуты, которые должны влиять на все репозитории для одного пользователя, должны быть помещены в файл, указанный в параметре конфигурации core.attributesfile (см. Git-config (1)). Его значение по умолчанию - $ XDG_CONFIG_HOME / git / attributes. Если $ XDG_CONFIG_HOME не задан или пуст, вместо него используются атрибуты $ HOME / .config / git /. Атрибуты для всех пользователей системы должны быть помещены в файл $ (prefix) / etc / gitattributes.
TL; DR: echo '*.py diff=python' >> "${XDG_CONFIG_HOME:-$HOME/.config}"/git/attributes
Обновление, 7 лет спустя
Хорошо, настраивать diff=python
для файлов * .py необязательно - это давно по умолчанию.
Но общий момент остается: все, что вы можете настроить в локальном (для каждого репозитория) .gitattributes
, вы также можете сделать глобальным (для каждого компьютера).
В самом man 5 gitattributes
есть много хороших примеров, поэтому пожалуйста em > иди в RTFM.
Давайте сделаем только одну индивидуальную настройку: --word-diff
для всех файлов Markdown (спасибо @RayLuo за предложение этого в комментариях).
Сначала мы добавляем внешний драйвер сравнения:
git config --global diff.stackoverflow-word-diff.command ~/.local/bin/stackoverflow-word-diff
API таков, что мы должны сделать автономный исполняемый файл оболочки.
cat > ~/.local/bin/stackoverflow-word-diff << 'EOF'
#!/bin/bash -eu
#-- uncomment for debug:
#echo >&2 "$(basename $0) args: $@"; set -x
FILENAME="$1"
OLDFILE="$2"
OLDHASH="$3"
OLDMODE="$4"
NEWFILE="$5"
NEWHASH="$6"
NEWMODE="$7"
git diff --no-ext-diff --word-diff "$OLDFILE" "$NEWFILE" || exit 0
#-- from https://stackoverflow.com/a/18948381/531179
#-- see `man 1 git` /EXTERNAL_DIFF, or https://www.git-scm.com/docs/git
EOF
chmod +x ~/.local/bin/stackoverflow-word-diff
Наконец, мы связываем это с *.md
, *.markdown
через глобальные атрибуты gitattributes:
mkdir -vp "${XDG_CONFIG_HOME:-$HOME/.config}"/git
{ echo '*.md diff=stackoverflow-word-diff'; \
echo '*.markdown diff=stackoverflow-word-diff; \
} \
>> "${XDG_CONFIG_HOME:-$HOME/.config}"/git/attributes
И это все, ребята! Попробуй это.
person
ulidtko
schedule
22.09.2013