我想git diff
在--patience
. git add -p
我怎样才能做到这一点?
背景:我正在处理一些 XML 文件,并且由于“未对齐”的进入/退出标签,其git diff
正常算法会产生非常差的差异。如果我运行git diff --patience
,我会得到更多有用的差异,但是没有明显的方法可以在git add -p
.
git add -p
当前拒绝 diff 标志,但您可以使用diff.algorithm
config 选项:
git config --global diff.algorithm patience
Git 1.8.2中的新功能。
这对我有用:
git -c diff.algorithm=patience add -p [...]
我在 Cygwin 中运行最新的 git v2.1.0。
嗯...您可以做的一件事是将输出管道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
这是我在重建自己的本地分支机构以进行生产集成时经常做的事情。
看起来您也可以将其用作合并策略,因此可能不是以交互方式添加差异,而是可以简单地创建一个包含所需内容的分支,然后将其合并。