在区分文件时,我更喜欢使用git diff --color-words.有没有一种方法使用时,使本作的diff的默认格式git add --patch或git add --interactive?
adz*_*ith 20
建立VonC所说的:
从Git 2.9开始,您可以使用此命令在以下期间为单词着色add --patch:
git -c interactive.diffFilter="git diff --color-words" add -p
Run Code Online (Sandbox Code Playgroud)
这将设置interactive.diffFilter调用的变量,add -p而不会影响其他调用.对我来说这是理想的,因为我通常想要add -p正常运行,但有时候想要运行它--color-words.
您可以轻松地为此命令添加别名,如下所示:
git config --global alias.addcw '-c interactive.diffFilter="git diff --color-words" add -p'
Run Code Online (Sandbox Code Playgroud)
mab*_*ham 16
我最近解决了这个问题,但它需要在git中修改Perl脚本.然而,这很简单,不需要特殊技能.
这个解决方案要求你的git配置使用colorization进行屏幕输出,因为这是git显示基于单词的diff的唯一情况.
git-add--interactive从安装中复制到PATH环境变量中的某个位置并重命名git-add--interactive-words.@colored = run_cmd_pipe("git", @diff_cmd, qw(--color --), $path);
Run Code Online (Sandbox Code Playgroud)
至
@colored = run_cmd_pipe("git", @diff_cmd, qw(--color --color-words --), $path);
Run Code Online (Sandbox Code Playgroud)
git add-interactive--words以git add --interactive使用基于颜色的基于单词的差异.git add --patch与此相结合是不方便的,因为您需要传递新脚本正确的参数.幸运的是,您可以为您的魔术词创建一个别名.gitconfig:[alias]
iaddpw = add--interactive-words --patch=stage --
Run Code Online (Sandbox Code Playgroud)
这意味着git iaddpw运行相当于git add --interactive --patch彩色基于字的差异.
And*_*sne 11
从VonC的回答中得到启示.以下是使用--interactivegit 2.9中介绍的选项的详细步骤.
将diff-highlight添加到PATH中.
cd ~/bin
curl -LO "https://raw.githubusercontent.com/git/git/master/contrib/diff-highlight/diff-highlight"
chmod u+x diff-highlight
Run Code Online (Sandbox Code Playgroud)
如果必须,重新启动shell.
然后配置Git,以便在它们在寻呼机中显示它们时过滤你的差异:
git config --global pager.log 'diff-highlight | less'
git config --global pager.show 'diff-highlight | less'
git config --global pager.diff 'diff-highlight | less'
git config --global interactive.diffFilter diff-highlight
Run Code Online (Sandbox Code Playgroud)
这将特别强调一条线的变化部分,这几乎与一条线相同--word-diff.
优点是你可以在每个地方获得单词diff,比如git log --patch或git add -p.
使用git 2.9(2016年6月),您将有一个新选项:interactive.diffFilter.
请参阅Jeff King()提交的0114384(2016年2月27日).(由Junio C Hamano合并- -在提交2052c52,2016年4月3日)peff
gitster
add --interactive:允许自定义差异高亮显示程序add - interactive的补丁程序块选择器知道如何向git请求彩色差异,并将它们与我们应用的未着色差异相关联.但对于那些使用像diff的diff-highlight这样的diff-filter工具来看他们正常的突出显示的人来说,没有任何办法.
此修补程序允许用户定义任意shell命令以管理彩色差异.确切的输出应该无关紧要(因为我们只是向人类显示结果),只要它与原始的diff是线性兼容的(因此,hunk-splitting也可以分割彩色版本).
然后你可以将diff传递给a diff --color-words.
正如Andrew Dufresne 评论的那样,GitHub博客帖子引用了contrib脚本:contrib/diff-highlight
您可以使用"
--color-words"仅突出显示已更改的线条部分.但是,对于代码来说,这通常很难读取,因为它会丢失行结构,并且最终会出现奇怪的格式化位.相反,此脚本对面向行的diff进行后处理,查找线对,并突出显示不同的段.
结果更加强调了一行的变化部分:
关于那些差异," diff-highlight"过滤器(in contrib/)学会了git log --graph更好地进行"输出".
请参阅Jeff King()提交4551fbb,提交009a81e,提交fbcf99e,提交7ce2f4c,提交e28ae50,提交53ab9f0,提交5013acc(2018年3月21日).(由Junio C Hamano合并- -在提交d19e556,2018年4月10日)peff
gitster
见多" diff-highlight:检测--graph由缩进 "
注意:在Git 2.17(2018年第二季度)之前," interactive.diffFilter"使用的" git add -i"必须在其输入和输出之间保持一对一的对应关系,但它没有强制执行并导致最终用户混淆.
我们现在至少确保过滤结果的行数与其输入相同,以检测损坏的过滤器.
见Jeff King()提交42f7d45,提交af3570e(2018年3月3日).(由Junio C Hamano合并- -在提交c5e2df0,2018年3月14日)peff
gitster
使用diff-highlight | less -FRX --tabs=4作为您diffFilter:
git -c interactive.diffFilter="diff-highlight | less -FRX --tabs=4" add --patch
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Homebrew (OS X),您可以将以下内容放入您的.gitconfig(使用已安装的diff-highlight):
[interactive]
diffFilter = "$(git --exec-path | sed 's/libexec/share/')/contrib/diff-highlight/diff-highlight | less -FRX --tabs=4"
Run Code Online (Sandbox Code Playgroud)
从 git 2.17 开始,单词 diff 解决方案必须在输入和输出行之间保持 1-1 的对应关系,以避免:
$ git -c interactive.diffFilter="git diff --word-diff --color" add --patch
fatal: mismatched output from interactive.diffFilter
hint: Your filter must maintain a one-to-one correspondence
hint: between its input and output lines.
Run Code Online (Sandbox Code Playgroud)
diff-so-fancy现在支持这个(从 v1.4.0 开始),因为https://github.com/so-fancy/diff-so-fancy/issues/35已经关闭。看到这个。
小智 5
如前所述,添加diff-highlight到interactive.diffFilter配置键是最简单的选项(自 Git 2.9 起)。以下命令可以在 Debian/Ubuntu 上实现此目的,无需复制脚本、更改权限或修改 $PATH:
git config interactive.diffFilter "perl /usr/share/doc/git/contrib/diff-highlight/diff-highlight"
Run Code Online (Sandbox Code Playgroud)
git -c interactive.diffFilter="git diff --color-words" add -p诸如或git config interactive.diffFilter "git diff --color-words"无法正常工作之类的事情:add -p总是不断建议第一个修改的文件。
| 归档时间: |
|
| 查看次数: |
3462 次 |
| 最近记录: |