使用 Git 的耐心差异算法进行交互式添加



我想使用 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,如果它更适合您的工作流程。这是我在重建自己的本地分支机构以进行生产集成时经常做的事情。

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

最新更新