从
gitattributes(5)
引用:
引用:
单个用户应影响所有存储库的属性应放在文件中,该文件由core.attributesfile配置选项指定(请参见git-config(1))。它的默认值为$XDG_CONFIG_HOME/git/attributes。如果$XDG_CONFIG_HOME未设置或为空,则使用$HOME/.config/git/attributes。系统上所有用户的属性应放在$(prefix)/etc/gitattributes文件中。
TL;DR:
echo '*.py diff=python' >> "${XDG_CONFIG_HOME:-$HOME/.config}"/git/attributes
更新,七年后
好了,不需要为*.py文件配置
diff=python
——这是自很久以前的默认设置。
但是一般观点仍然存在:您可以在本地(每个存储库)的
.gitattributes
中设置的任何内容,也可以使其全局(每台机器)。
在
man 5 gitattributes
中有许多好的示例,因此请 RTFM。
让我们只做一个自定义设置:
所有Markdown文件都使用--word-diff(感谢
@RayLuo 在评论中提出此建议)。
首先,我们添加一个外部diff驱动程序:
git config --global diff.stackoverflow-word-diff.command ~/.local/bin/stackoverflow-word-diff
API的特性是必须制作一个独立的包装可执行文件。
cat > ~/.local/bin/stackoverflow-word-diff << 'EOF'
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
EOF
chmod +x ~/.local/bin/stackoverflow-word-diff
最后,我们通过全局gitattributes将其与
*.md
、
*.markdown
文件关联起来。
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
就这些啦!测试一下吧。
*.py diff=python
现在是默认设置了,因此我最初提出的问题已经不相关了。无论如何,知道有一个用户级属性文件还是很好的! - Eric O. Lebigot*.py diff=python
行为已经是默认值了。那么,如果可能的话,我们如何进一步定制diff选项呢?例如,git diff --word-diff ... ...
将是一个有趣的尝试。我们如何在我们的设置中声明它,最好是针对markdown文件? - RayLuoset -e
反噬了我。只需要添加|| exit 0
...一分钟后更新。 - ulidtko