【问题标题】:Order of commit arguments in git diffgit diff 中提交参数的顺序
【发布时间】:2015-10-05 22:08:03
【问题描述】:

git命令的顺序是什么

git diff [--options] <commit> <commit> [--] [<path>…]

比较不同的提交?好像如果我想比较新的和旧的,我需要做

git diff [--options] &lt;New_commit&gt; &lt;Old_commit&gt; 以查看当前差异?

我通常是git diff [--options] &lt;Old_commit&gt; &lt;New_commit&gt;

但这似乎是错误的?

例如当我这样做时

$ 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(-)

但是当我这样做时

$ git diff --stat `git rev-list --until="dec 31 2014" origin/master | head -1`

我得到的打印输出是:

384 files changed, 61255 insertions(+), 20526 deletions(-)

这不是接近 300000。所以我的问题是我是否应该先插入新提交,然后插入旧提交,例如:

 $ 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` 

我找不到任何关于我应该以什么顺序插入提交以查看我的新提交和旧提交之间的区别的文档。或许你可以帮我澄清一下?

提前致谢。

编辑: 我问的原因是我想

  1. 知道在给定旧提交的情况下,有多少新代码行已添加到新提交中,并且

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

【问题讨论】:

  • 感谢基于 delta 的解释 :)

标签: git git-diff


【解决方案1】:
git diff commit_source commit_destination

git diff 将显示的是

  • 如果您将commit_source 合并到commit_destination 中将带来的更改列表

这与:

  • commit_sourcecommit_destination 之间的所有差异

【讨论】:

    【解决方案2】:

    TL;DR

    在以下git-diff语法中,

    git diff [--options] <commit> <commit> [--] [<path>...]
    
    • 第一个 &lt;commit&gt; 对应于基本提交,
    • 第二个&lt;commit&gt; 对应于要与基本提交进行比较的提交。

    使用受数学启发的符号,

    git diff <x> <x+∆x>
    

    会告诉你区别∆x,而

    git diff <x+∆x> <x>
    

    会告诉你区别-∆x

    请注意,由于不需要以任何方式对两个提交进行排序,无论是按时间顺序还是按拓扑顺序,将它们称为“旧”和“新”(就像您一样)有点误导。

    更多详情

    只需查找git-diff man page,您就可以学到很多东西。在描述部分,你会发现

    git diff [--options] <commit> <commit> [--] [<path>...]
    

    这是查看任意两个&lt;commit&gt;之间的变化。

    当然,这并不能告诉您哪个提交是哪个,但是,在 Examples 部分下,您会发现几个有启发性的示例:

    git diff HEAD^ HEAD
    

    [...] 比较上次提交和上次提交之前的版本。

    git diff topic...master
    

    [...]

    自主题分支启动后主分支上发生的更改。

    【讨论】:

    • 那是我不明白的事情。直觉告诉我我想要 git diff 并且它告诉我当我执行 $ git diff --stat 时差异是 389650 次插入(+),这是空项目(开始)和当前提交我得到 61255 个插入(+)(IE 61255 行代码)。所以 git diff 不像我想要的那样工作。
    • Wheras git diff 告诉我,repo 添加了 40000 行代码并删除了大约 300000 行代码,从我的角度来看,这更符合逻辑,所以它不太有效我想要的方式。
    猜你喜欢
    • 2019-02-14
    • 2020-02-15
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    相关资源
    最近更新 更多