我想在git add -p
中使用Git的patience diff算法(如果使用--patience
参数调用git diff
,就会得到这个算法)。我该怎么做呢?
背景:我正在处理一些XML文件,以及git diff
的标准算法produces pretty poor diffs due to "misaligned" entry/exit tags。如果我运行git diff --patience
,我会得到更多有用的差异,但在git add -p
中没有明显的方法来使用这些差异。
发布于 2013-04-11 15:45:53
git add -p
当前拒绝diff标志,但您可以使用diff.algorithm
配置选项:
git config --global diff.algorithm patience
Git 1.8.2中的新特性。
发布于 2014-09-11 00:13:59
这对我很有效:
git -c diff.algorithm=patience add -p [...]
我在Cygwin中运行最新的git v2.1.0。
发布于 2012-09-14 21:37:47
嗯..。您可以做的一件事是通过管道将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
。这是我在为生产集成而重建自己的本地分支时经常做的事情。
看起来您还可以将其用作merge strategy,,因此可能的情况是,您可以简单地创建一个包含您想要的分支,然后将其合并进去,而不是交互地添加diffs。
https://stackoverflow.com/questions/12425511
复制相似问题