列出两个日期

时间:2015-08-22 19:46:41

标签: git

我需要找到两个日期之间应用于我的本地git仓库副本的所有提交。通常的 git --log 命令不能满足我的需要。这是我的详细情景。比如8月20日,我需要列出8月1日到8月15日之间所有适用于我当地的回购副本的提交。

  1. 7月份另一位用户提交给他当地的回购邮件,但在此期间我提取并合并到我的回购邮件中的用户应该列出清单。

  2. 在此期间,另一位用户对其本地仓库进行的提交,但我合并到我的仓库中,直到8月15日之后制作这个清单。

  3. 当然,我在此期间所做的所有提交都应该在此列表中。同样,在此期间,其他用户对其本地存储库进行的所有提交也将在此列表中合并到我的本地存储库中。但这部分很简单,无论如何这就是 git --log 所做的。上面的部分(1)和(2)是棘手的。

  4. 注意:任何仅依赖于提交日期的命令都无法做到这一点。很可能它将排除类型(1)的提交并包括类型(2)的提交。我想要的是包括类型(1)的提交和排除类型(2)的提交。

1 个答案:

答案 0 :(得分:0)

来自git log --help您可以看到:

   --since=<date>, --after=<date>
       Show commits more recent than a specific date.

   --until=<date>, --before=<date>
       Show commits older than a specific date.

你还有--no-merges标志,因为拉动而放弃了提交的提交。

所以,你可以尝试:

git log --after=<date> --before=<date> --no-merges

但您也可以尝试:

git log --graph

查看提交的完整“树”。

<强> - 修改

也许你真正想要的不是日期的范围,而是版本的范围。请参阅联机帮助页:

   <revision range>
       Show only commits in the specified revision range. When no
       <revision range> is specified, it defaults to HEAD (i.e. the
       whole history leading to the current commit). origin..HEAD specifies all 
       the commits reachable from the current commit (i.e.  HEAD), but 
       not from origin. For a complete list of ways to spell <revision range>, 
       see the Specifying Ranges section of gitrevisions(7).

因此,您可以选择要启动范围的提交的ID以及要完成范围的提交的ID,该范围可能是:

git log from_commit_id..HEAD

如果您想要查看从一次提交开始到您现在所在的所有提交。不要忘记使用(或结合)--graph标志,无论如何都会给你全局。