me_*_*and 20 git git-diff git-add git-patch
我想使用Git的耐心差异算法(如果你git diff用--patience参数调用你得到的算法)git add -p.我怎样才能做到这一点?
背景:我正在使用一些XML文件,并且由于"未对齐"的进入/退出标记,git diff正常算法会产生相当差的差异.如果我运行git diff --patience,我会得到更多有用的差异,但没有明显的方法来使用这些差异git add -p.
Tob*_*obu 33
git add -p目前拒绝diff标志,但您可以使用diff.algorithmconfig选项:
git config --global diff.algorithm patience
Run Code Online (Sandbox Code Playgroud)
Git 1.8.2中的新功能.
Amr*_*mro 10
这对我有用:
git -c diff.algorithm=patience add -p [...]
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
这会将 diff 的输出应用到工作目录,但不会提交或暂存更改。然后您可以git add -p像平常一样运行,--patience差异将是您交互式添加的更改。
如果它更适合您的工作流程,您没有理由不能直接通过管道diff连接。apply这是我在重建自己的本地分支机构以进行生产集成时经常做的事情。
看起来您也可以将其用作合并策略,因此可能的情况是,您可以简单地创建一个包含所需内容的分支,然后将其合并,而不是交互式地添加差异。