在所有git项目中,是否可以让所有"git diff"命令使用"Python diff"?

Eri*_*got 14 python git diff gitattributes

包括该行时

*.py diff=python
Run Code Online (Sandbox Code Playgroud)

在本地.gitattributes文件中,git diff为不同的Python文件(具有更改所在的函数的名称等)生成漂亮的标签.

是否有可能要求git对所有 git项目中的所有 Python文件使用此diff模式?我尝试设置全局〜/ .gitattributes,但本地git存储库不使用它.有没有比使用?初始化每个新git项目更方便的方法?ln -s ~/.gitattributes

uli*_*tko 4

引用自gitattributes(5)

\n\n
\n

应影响单个用户的所有存储库的属性应放置在 core.attributesfile 配置选项指定的文件中(请参阅 git-config[1])。它的默认值为 $XDG_CONFIG_HOME/git/attributes。如果 $XDG_CONFIG_HOME 未设置或为空,则使用 $HOME/.config/git/attributes 代替。系统上所有用户的属性应放置在 $(prefix)/etc/gitattributes 文件中。

\n
\n\n

长话短说: echo \'*.py diff=python\' >> "${XDG_CONFIG_HOME:-$HOME/.config}"/git/attributes

\n\n
\n\n

7年后更新

\n\n

好的,不需要diff=python为 *.py 文件 \xe2\x80\x94 配置它,它是很久以前的默认值。

\n\n

但总体要点仍然是:您可以在本地(每个存储库)中设置的任何内容.gitattributes,也可以设置为全局(每个计算机)。

\n\n

本身就有很多很好的例子man 5 gitattributes,所以使用 RTFM。

\n\n

让我们只做一个自定义设置:--word-diff针对所有 Markdown 文件(感谢@RayLuo在评论中建议这一点)。

\n\n

首先,我们添加一个外部 diff 驱动程序:

\n\n
git config --global diff.stackoverflow-word-diff.command ~/.local/bin/stackoverflow-word-diff\n
Run Code Online (Sandbox Code Playgroud)\n\n

API 是这样的,我们必须制作一个独立的包装器可执行文件。

\n\n
git config --global diff.stackoverflow-word-diff.command ~/.local/bin/stackoverflow-word-diff\n
Run Code Online (Sandbox Code Playgroud)\n\n

*.md最后,我们通过*.markdown全局 gitattributes将其绑定到:

\n\n
cat > ~/.local/bin/stackoverflow-word-diff << \'EOF\'\n#!/bin/bash -eu\n\n#-- uncomment for debug:\n#echo >&2 "$(basename $0) args: $@"; set -x\n\nFILENAME="$1"\nOLDFILE="$2"\nOLDHASH="$3"\nOLDMODE="$4"\nNEWFILE="$5"\nNEWHASH="$6"\nNEWMODE="$7"\n\ngit diff --no-ext-diff --word-diff "$OLDFILE" "$NEWFILE" || exit 0\n\n#-- from https://stackoverflow.com/a/18948381/531179\n#-- see `man 1 git` /EXTERNAL_DIFF, or https://www.git-scm.com/docs/git\nEOF\nchmod +x ~/.local/bin/stackoverflow-word-diff\n
Run Code Online (Sandbox Code Playgroud)\n\n

这就是大家!测试一下。

\n