git diff中提交参数的顺序

use*_*441 13 git git-diff

git命令的顺序是什么

git diff [--options] <commit> <commit> [--] [<path>…]
Run Code Online (Sandbox Code Playgroud)

将不同的提交相互比较?似乎我想将新的与我需要做的旧的进行比较

git diff [--options] <New_commit> <Old_commit> 为了看到当前的差异?

我经常这样做 git diff [--options] <Old_commit> <New_commit>

但那似乎是错的?

当我做的时候

$ git diff `git rev-list --since="jun 30 2014" --reverse origin/master | head -1` `git rev-list --until="dec 31 2014" origin/master | head -1` --shortstat 

1072 files changed, 389650 insertions(+), 39180 deletions(-)
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做

$ git diff --stat `git rev-list --until="dec 31 2014" origin/master | head -1`
Run Code Online (Sandbox Code Playgroud)

我得到的打印输出:

384 files changed, 61255 insertions(+), 20526 deletions(-)
Run Code Online (Sandbox Code Playgroud)

哪个不是300000附近.所以我的问题是我是否应该首先插入新提交和旧提交sedond,如:

 $ git diff `git rev-list --until="dec 31 2014" origin/master | head -1`..`git rev-list --since="jun 30 2014" --reverse origin/master | head -1` 
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于我应该在哪个顺序插入提交的文档,以便查看我的新提交和旧提交之间的区别.也许你可以为我澄清这个?

提前致谢.

编辑: 我问的原因是我想要的

  1. 知道在给定旧提交的情况下已添加到新提交的新代码行数,以及

  2. 我想计算新提交中的代码行数.

jub*_*0bs 19

TL; DR

在以下git-diff语法中,

git diff [--options] <commit> <commit> [--] [<path>...]
Run Code Online (Sandbox Code Playgroud)
  • 第一个<commit>对应于基本提交,
  • 第二个<commit>对应于与基本提交进行比较的提交.

使用数学启发的符号,

git diff <x> <x+?x>
Run Code Online (Sandbox Code Playgroud)

会告诉你差异?x,而

git diff <x+?x> <x>
Run Code Online (Sandbox Code Playgroud)

会告诉你差异-?x.

请注意,因为两个提交不需要以任何方式排序,无论是按时间顺序还是拓扑结构,将它们称为"旧"和"新"(如您所做)都有点误导.

更多细节

只需查看git-diff手册页,您就可以学到很多东西.在" 描述"部分下,您将找到

git diff [--options] <commit> <commit> [--] [<path>...]
Run Code Online (Sandbox Code Playgroud)

这是为了查看两个任意之间的变化<commit>.

当然,这并没有告诉你哪个提交是哪个,但是,在示例部分下面,你会发现一些有启发性的例子:

git diff HEAD^ HEAD
Run Code Online (Sandbox Code Playgroud)

[...]比较上次提交和最后一次提交之前的版本.

git diff topic...master
Run Code Online (Sandbox Code Playgroud)

[...]

自主题分支启动以来主分支上发生的更改.