我想使用 Git 的耐心差异算法(如果您使用 --patience
参数调用 git diff
算法,您将获得的算法)与 git add -p
.我该怎么做?
背景:我正在使用一些XML文件,由于"未对齐"的进入/退出标签,git diff
的正常算法会产生非常差的差异。如果我运行git diff --patience
,我会得到更有用的差异,但没有明显的方法来使用这些差异git add -p
。
>git add -p
目前拒绝差异标志,但您可以使用diff.algorithm
配置选项:
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
这会将差异的输出应用于工作目录,但它不会提交或暂存更改。然后,您可以像往常一样运行git add -p
,--patience
差异将是您要以交互方式添加的更改。
没有理由不能直接将diff
管道传输到apply
,如果它更适合您的工作流程。这是我在重建自己的本地分支机构以进行生产集成时经常做的事情。
看起来您也可以将其用作合并策略,因此您可能不是以交互方式添加差异,而是可以简单地创建一个具有所需内容的分支,然后将其合并。