gpt4 book ai didi

git - 从命令行覆盖 .gitattributes

转载 作者:行者123 更新时间:2023-12-03 21:15:24 27 4
gpt4 key购买 nike

有什么办法可以暂时覆盖git中的属性,类似于-c可以用来覆盖配置选项吗?

我想调用git diff带有特定的自定义textconv命令与我通常使用的命令不同。

为了更具体:我的实际用例是在 vim 中使用 jupytext.vim plugin 编辑 Jupyter 笔记本。 .

我的正常~/.gitconfig包含

[diff "jupyternotebook"]
command = git-nbdiffdriver diff

设置 nbdime 作为差异驱动程序,然后在 ~/.gitattributes :
*.ipynb diff=jupyternotebook

现在我想拥有
[diff "jupytext"]
textconv = jupytext --from=ipynb --to=md -o - <

(或类似的东西)在 git config 中,并有 git diff表现得好像
*.ipynb diff=jupytext

在 .gitattributes 中。

我愿意添加 [diff "jupytext"]部分永久到我的 ~/.gitconfig .但是,根据传递给 git diff 的命令行选项,使用“jupytext”驱动程序而不是默认的“jupyternotebook”必须是临时的。 .

或者,我可以使用 git diff 的命令行选项。这迫使它使用不同的 ~/.gitattributes优先于所有其他 .gitattributes 的文件文件(例如在同一目录中)。

最终,命令行选项旨在进入 g:gitgutter_diff_args vim-gitgutter 的设置.我想强制插件转换 *.ipynb 文件的方式与我通常希望使用 nbdime 转换它们的方式不同。 .

最佳答案

我有一个类似的情况,我想切换 textconv每次运行时打开和关闭过滤器,而不是按文件扩展名。 (我希望有时能够检查是否有任何变化,而不仅仅是从一个值到另一个值的数字变化。)我发现的技巧是创建一个“默认”案例,它总是使用,使用 cat对于 textconv,然后我可以用 -c 重新分配。
在我的 ~/.config/git/attributes我有:

* diff=default
在我的 ~/.gitconfig我有:
[diff "default"]
textconv = cat
[diff "cat"]
textconv = cat
[diff "nonums"]
textconv = "f(){ gsed -E 's/[0-9]+/##/g' \"$1\" ; }; f"
除了这个别名,让我在需要时通过调用 git diff-nonums 临时覆盖默认大小写。 . (别名允许 git diff 允许的任何参数。)
[alias]
diff-nonums = !git -c diff.default.textconv=\"`git config diff.nonums.textconv`\" diff
对于您的情况,我认为您应该使用 difftool,而不是 diff 的 command配置,切换实际命令。 The nbdime docs表明他们提供了一个脚本来编写所需的配置( git-nbdifftool config --enable [--global] ,然后可以使用 git difftool --tool=nbdime )完成此操作后,我相信您可以设置 default+alias 技巧来切换工具和 textconv 来完成您需要的操作对于 nbdiff 或 jupytext。
(参见 man gitattributes ,后面几段,了解可以保存属性文件的位置。注意,我不清楚 commandexternaldifftool 之间的区别。例如,我没有刚才找不到简单的方法来获取外部或命令来使用 git 本身。)
编辑 我从 this question 看到git 在很大程度上打算让您在 textconv 与外部命令之间进行选择,而不是 mix/chain(不幸的是)。即 man gitconfig 中的部分被称为“选择 textconv 与外部差异”。链接的问题建议使用临时文件的解决方法。

关于git - 从命令行覆盖 .gitattributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54068308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com