3

我正在尝试使用以下命令在本地和远程 git 分支之间进行区分:

git diff --ignore-space-at-eol -b -w --minimal remotes/branch/master > diff.patch

一切都很好,除了我在补丁文件输出中看到,例如

diff --git a/src/game/AccountMgr.cpp b/src/game/AccountMgr.cpp
index a271c8a..6f363c6 100644
--- a/src/game/AccountMgr.cpp
+++ b/src/game/AccountMgr.cpp
diff --git a/src/game/AccountMgr.h b/src/game/AccountMgr.h
index d406496..405fa32 100644
--- a/src/game/AccountMgr.h
+++ b/src/game/AccountMgr.h
...

似乎这些文件没有变化。如何从差异中删除此类文件?

4

2 回答 2

1

请注意,相同的 git diff --ignore-space-at-eol 可能有相反的错误:显示没有变化的地方:

请参阅Johannes Schindelin ( )的commit 044fb19commit a5229cc(2016 年 7 月 9 日) 。(由Junio C Hamano 合并——提交 f2cfb8f中,2016 年 7 月 25 日)dscho
gitster

git version
git version 2.9.2.windows.1

printf "a\nb\nc\n" >pre
printf "a\nbX\nc\n" >post
git diff --no-index --patience --ignore-space-at-eol pre post
(empty!?)

Git 2.10+(2016 年第三季度)将解决这个问题:

diff: 修复一个双关--ignore-space-at-eol

在比较两行时,忽略末尾的任何空格,我们首先尝试匹配尽可能多的字节,并仅在不匹配时退出循环,让其余部分由与其他whitespace-ignoring代码路径共享的代码处理。

然而,在比较字节时,我们总是递增计数器,即使字节不匹配。
并且因为我们在那个时候陷入了space-at-eol处理,就好像这种不匹配从未发生过。

见“ xdiff/xutils.c

于 2016-07-26T10:41:44.950 回答
0

似乎是过时的 msys git 版本中的错误。更新到最新解决了这个问题。

于 2013-11-02T06:38:52.917 回答