显示自分支创建以来的提交

lur*_*her 58 git git-log

有没有办法只看到git log分支创建后添加的提交或其他命令?

usage: git log [<options>] [<since>..<until>] [[--] <path>...]
   or: git show [options] <object>...

    --quiet               suppress diff output
    --source              show source
    --decorate[=...]      decorate options
Run Code Online (Sandbox Code Playgroud)

Mat*_*eng 59

使用三个句点来引用第二个分支与第一个分支分开的提交,或者在这种情况下,您的分支与master分开:

git log master...<your_branch_name>
Run Code Online (Sandbox Code Playgroud)

确保在这种情况下使用三个句点.

侧注:您也可以省略分支名称,因为在这种情况下git会自动引用HEAD指针,例如:

git log master...
Run Code Online (Sandbox Code Playgroud)

等同于我之前的例子.这适用于提交比较可用的任何地方.


Ala*_*son 54

完整文档在这里:https: //www.kernel.org/pub/software/scm/git/docs/gitrevisions.html

假设您有一个如下所示的回购:

base  -  A  -  B  -  C  -  D   (master)
                \
                 \-  X  -  Y  -  Z   (myBranch)
Run Code Online (Sandbox Code Playgroud)

验证回购状态:

> git checkout master
Already on 'master'
> git status ; git log --oneline
On branch master
nothing to commit, working directory clean
d9addce D
110a9ab C
5f3f8db B
0f26e69 A
e764ffa base
Run Code Online (Sandbox Code Playgroud)

对于myBranch:

> git checkout myBranch
> git status ; git log --oneline
On branch myBranch
nothing to commit, working directory clean
3bc0d40 Z
917ac8d Y
3e65f72 X
5f3f8db B
0f26e69 A
e764ffa base
Run Code Online (Sandbox Code Playgroud)

假设您在myBranch上,并且您只需要更改SINCE master.使用双点版本:

> git log --oneline master..myBranch
3bc0d40 Z
917ac8d Y
3e65f72 X
Run Code Online (Sandbox Code Playgroud)

三点版本提供从master的tip到myBranch的尖端的所有更改.但请注意,不包括常见提交B:

> git log --oneline master...myBranch
d9addce D
110a9ab C
3bc0d40 Z
917ac8d Y
3e65f72 X
Run Code Online (Sandbox Code Playgroud)

请注意: git log并且git diff不同! 行为并非完全相反,但几乎是:

> git diff master..myBranch
diff --git a/rev.txt b/rev.txt
index 1784810..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-D
+Z

> git diff master...myBranch
diff --git a/rev.txt b/rev.txt
index 223b783..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-B
+Z
Run Code Online (Sandbox Code Playgroud)

因此,双点版本显示从主要尖端(即D)到myBranch(Z)尖端的差异.三点版本显示了myBranch(即B)的基数与myBranch(Z)的顶端之间的差异.

  • 赞成描述..和...之间的区别并提供示例。很棒的答案! (2认同)

Sha*_*tin 12

如果您在创建的分支上:

git log master..
Run Code Online (Sandbox Code Playgroud)


San*_*nda 5

是的,可以将您的“新”分支与主分支(通常称为:“master”)进行比较:

git log master..<your_branch_name>
Run Code Online (Sandbox Code Playgroud)

当然,更换<your_branch_name>

  • 这仅显示自您上次从 master 拉取以来的提交,反之亦然,这与显示自创建分支以来的提交不同。 (6认同)