21

我想git diff--patience. git add -p我怎样才能做到这一点?

背景:我正在处理一些 XML 文件,并且由于“未对齐”的进入/退出标签,其git diff正常算法会产生非常差的差异。如果我运行git diff --patience,我会得到更多有用的差异,但是没有明显的方法可以在git add -p.

4

3 回答 3

37

git add -p当前拒绝 diff 标志,但您可以使用diff.algorithmconfig 选项:

git config --global diff.algorithm patience

Git 1.8.2中的新功能。

于 2013-04-11T07:45:53.227 回答
14

这对我有用:

git -c diff.algorithm=patience add -p [...]

我在 Cygwin 中运行最新的 git v2.1.0。

于 2014-09-10T16:13:59.030 回答
4

嗯...您可以做的一件事是将输出管道git diff传输到一个临时位置,然后将其读回git apply

git diff --patience <commitA> <commitB> > /tmp/patch.out
# checkout a new branch or otherwise do what you need to prep
git apply < /tmp/patch.out

这会将 diff 的输出应用到工作目录,但不会提交或暂存更改。然后您可以git add -p像往常一样运行,--patience差异将是您以交互方式添加的更改。

如果它更适合您的工作流程,您没有理由不能直接通过管道diff传输。apply这是我在重建自己的本地分支机构以进行生产集成时经常做的事情。

看起来您也可以将其用作合并策略,因此可能不是以交互方式添加差异,而是可以简单地创建一个包含所需内容的分支,然后将其合并。

于 2012-09-14T13:37:47.080 回答