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

有没有办法使用git log或其他命令仅查看在创建分支之后添加的提交?

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

    --quiet               suppress diff output
    --source              show source
    --decorate[=...]      decorate options
lurscher asked 2019-11-08T10:09:50Z
5个解决方案
57 votes

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

git log master...<your_branch_name>

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

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

git log master...

等同于我之前的示例。 只要有提交比较就可以使用。

Matt Meng answered 2019-11-08T10:10:26Z
53 votes

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

假设您有一个如下所示的仓库:

base  -  A  -  B  -  C  -  D   (master)
                \
                 \-  X  -  Y  -  Z   (myBranch)

验证回购状态:

> 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

对于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

假设您在myBranch上,并且只想更改SINCE master。 使用两点式版本:

> git log --oneline master..myBranch
3bc0d40 Z
917ac8d Y
3e65f72 X

三点版本提供了从母版技巧到myBranch技巧的所有更改。 但是,请注意,不包含公共提交B:

> git log --oneline master...myBranch
d9addce D
110a9ab C
3bc0d40 Z
917ac8d Y
3e65f72 X

请注意:git loggit 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

因此,两点版本显示了从母版的顶端(即D)到myBranch的顶端(Z)的差异。 三点版本显示了从myBranch的底部(即B)到myBranch的尖端(Z)的差异。

Alan Thompson answered 2019-11-08T10:11:38Z
12 votes

如果您在创建的分支上:

git log master..
Shaun Luttin answered 2019-11-08T10:12:02Z
3 votes

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

git log master..<your_branch_name>

当然,请更换<your_branch_name>

Sandro Munda answered 2019-11-08T10:12:33Z
0 votes

我可能是错的,但我认为OP中并没有要求提供任何答案,因此我想添加一个新答案。 我相信这是与我完全相同的问题,因为在其他源代码控制系统中,这非常容易做到。

我在MASTER中具有以下内容:

'开发'     |     ->'GP603'

在ORIGIN(我的本地系统)中,我有:

'GP603'[从remote / GP603分支中清除]

然后,我执行了2次不同的提交。 第一次提交更改文件X。第二次提交更改文件X和文件Y。一天后,我只想验证我对本地分支ORIGIN / GP603状态的假设。 这是我为验证我记得只有2次提交(实际上是分支中仅有的2次提交)而做的工作

$ git log origin / GP.603 ...

(提交2)提交b0ed4b95a14bb1c4438c8b48a31db7a0e9f5c940(HEAD-> GP.603)作者:xxxxxxx日期:周三xxxxx -0400

1. Fixed defect where the format of the file names and paths were being added to HashTable in such a way that they would never be matched in any comparison.  This was an
defect causing older failed files to never be moved to the correct directory (WindowsServiceApplication.cs)

2. Removing worthless and contextless message as it does nothing but clog the log with garbage making it harder to read (DinoutFileHandler.cs)

(提交1)提交2c4541ca73eacd4b2e20d89f018d2e3f70332e7e作者:xxxxxxx日期:星期二十月xxxxx -0400

In ProcessFile() function need to perform a .ToLower() on the file path string when adding it o the failedFiles collection.
Ethan Hodys answered 2019-11-08T10:13:52Z
translate from https://stackoverflow.com:/questions/9725531/show-commits-since-branch-creation