我能翻译成中文:我可以让git add -p显示像git diff --word-diff一样的更改吗?

8
我已经递归地替换了我的代码库中的许多单词模式。在提交之前,我需要检查每个是否有错误替换。如果git add -p可以使用--word-diffgit diff相同的格式,标记只更改的单词而不是整行,那会帮助我很多。 有人在这里问过相同的问题,但也许它已经被实现了? https://groups.google.com/forum/#!topic/git-users/7uO2OUJGvP0

1
可能是如何在git add --patch中使用--color-words?的重复问题。 - Olivier Le Floch
2个回答

5
自Git 2.9以来,您可以使用属性interactive.diffFilter(如我在此答案中所提到的)。

但是,任何git -c interactive.diffFilter="git diff --color-words" add -p自Git 2.17以来都会生成一个错误消息。

fatal: mismatched output from interactive.diffFilter

(如此问题中所见)
因此,使用用于interactive.diffFilter设置的脚本仍然是更安全的方法。

“--color-words”示例似乎无法正常工作。它会显示每个块以进行多次分段,并且即使在交互期间拒绝了某些块,它们最终仍会被分段。 - dionyziz
@dionyziz 你使用的是哪个版本的git? - VonC
我正在使用Git版本2.13.3。 - dionyziz
@dionyziz 最新的2.15版本是否仍然存在这个问题? - VonC
完全无法在git 2.19上工作。 fatal: mismatched output from interactive.diffFilter hint: Your filter must maintain a one-to-one correspondence between its input and output lines. - leftaroundabout
@leftaroundabout 是的,自Git 2.17以来已经强制执行(https://dev59.com/7a_la4cB1Zd3GeqPwq4D)。我已经修改了答案。 - VonC

2

diff-highlight添加到interactive.diffFilter配置键是最简单的选项(自Git 2.9以来)。在Debian / Ubuntu上,以下命令可以完成此操作:

git config interactive.diffFilter "perl /usr/share/doc/git/contrib/diff-highlight/diff-highlight"

git -c interactive.diffFilter="git diff --color-words" add -p 或者 git config interactive.diffFilter "git diff --color-words" 这样的命令不能正常工作: add -p 始终建议使用第一个修改的文件。


这个功能运行得相当不错(尽管看起来没有 git diff --word-diff 那么好看)。 - leftaroundabout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接