奇怪的git diff行为

时间:2016-10-25 17:18:52

标签: git branch diff git-diff

我在分支A上,分支B在它前面。我想看B A中的更改,但是当我运行git diff B时,它会将其添加为删除,反之亦然,如果我想放B更改为A的工作副本(如果我有测试分支分支,则可取),尝试运行git diff B > Bfile然后git apply Bfile只会引发一堆错误。

如果我改为输入git diff A..B(我已经在A),则会显示正确的更改。

那么为什么第一个命令会在添加时将更改显示为删除?当我只想要与另一个分支进行准确的更改时,必须输入我已经开启的分支似乎是多余的和反直觉的。

1 个答案:

答案 0 :(得分:1)

(请注意,git diff A Bgit diff A..B同义,因此我将在此答案中互换使用。)

您所描述的行为是因为git diff B等同于git diff B HEAD,它显示了从 B {{的更改 1}}。您的解决方法HEAD有效(因为git diff A..B)。要跳过指定git diff HEAD..B分支(或A)的要求,请执行:

HEAD

这会告诉Git在左侧填写git diff ..B ,因此它相当于HEAD