能否在所有git项目中,让所有的 "git diff "命令都使用 "Python diff"?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了能否在所有git项目中,让所有的 "git diff "命令都使用 "Python diff"?相关的知识,希望对你有一定的参考价值。
当包含以下一行时
*.py diff=python
在本地.gitattributes文件中。git diff
为Python文件的不同差异块生成了漂亮的标签 (包括变化所在的函数名称等)。
能否要求 git 为以下文件使用这种差异模式?都 Python文件跨 都 git项目? 我试着设置了一个全局的~.gitattributes,但它并没有被本地的git仓库使用。 有没有比在每个新的git项目中初始化一个 ln -s ~/.gitattributes
?
引自 gitattributes(5)
:
核心.attributesfile配置选项(见git-config(1))所指定的文件中,应将影响单个用户的所有仓库的属性放在其中,默认值是$XDG_CONFIG_HOMEgitattributes。它的默认值是 $XDG_CONFIG_HOMEgitattributes。如果 $XDG_CONFIG_HOME 没有设置或为空,则使用 $HOME.configgitattributes 来代替。系统中所有用户的属性应该放在$(prefix)etcgitattributes文件中。
TL;DR.Gitattributes文件中。 echo '*.py diff=python' >> "${XDG_CONFIG_HOME:-$HOME/.config}"/git/attributes
更新,7年后
好的,不需要配置为 diff=python
为*.py文件 - 这是很久以前的默认值。
但总的来说,你可以在本地(每个仓库)设置的任何东西。.gitattributes
你也可以做全局(每台机器)。
有很多好的例子在 man 5 gitattributes
本身,所以 请 去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
这就是所有的人!测试一下吧。
要告诉 git 使用 ~.gitattributes,你需要把这个放到 ~.gitconfig 中。
[core]
attributesfile = ~/.gitattributes
不,git只在本地寻找属性。.gitattributes
和 .git/info/attributes
以上是关于能否在所有git项目中,让所有的 "git diff "命令都使用 "Python diff"?的主要内容,如果未能解决你的问题,请参考以下文章