86

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

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

    --quiet               suppress diff output
    --source              show source
    --decorate[=...]      decorate options
4

7 回答 7

84

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

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

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 上,并且您只想查看自 master 分支以来的更改。使用两点版本:

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

三点版本给出了从 master 的提示到 myBranch 的提示的所有更改。但是,请注意,常见的提交 B 不包括在内:

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

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

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

于 2014-07-15T22:57:57.970 回答
70

我的原始答案不正确。你想要双点符号:

git log master..<your_branch_name>

我得到了与预期不同的结果,因此我使用以下 repo 结构进行了测试:

a - - c - e - - g - i   master
  \ b - d / \ f - h     test

然后我尝试了git log master..test

f - h

然后git log master...test

  - g - i
  f - h

所以双点显示提交test但不在master( ^master temp) 中,三点显示提交在masterANDtest但不是在两者中。

这个问题的另一个很好的答案首先是正确的并且有更好的解释(https://stackoverflow.com/a/24769534/1185838);它可能应该被标记为答案而不是我的。您还可以参考这个答案(https://stackoverflow.com/a/463027/1185838),它帮助我更好地理解双点符号和三点符号之间的区别。

为不正确的答案道歉!


旧答案 - 不正确

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

git log master...<your_branch_name>

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

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

git log master...

相当于我之前的例子。这适用于任何提交比较可用的地方。

于 2013-01-03T22:36:32.200 回答
13

如果您在创建的分支上:

git log master..
于 2015-11-26T02:09:47.703 回答
5

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

git log master..<your_branch_name>

当然,更换<your_branch_name>.

于 2012-03-15T18:11:21.090 回答
0

我可能是错的,但我认为 OP 中没有确切要求任何答案,所以我想添加一个新答案。我相信这是我遇到的完全相同的问题,因为在其他源代码控制系统中这很容易做到。

我在 MASTER 中有以下内容:

'发展' | --> 'GP603'

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

'GP603' [从远程/GP603 分支克隆]

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

$ git log 起源/GP.603...

(提交 2) 提交 b0ed4b95a14bb1c4438c8b48a31db7a0e9f5c940 (HEAD -> GP.603) 作者: xxxxxxx 日期: Wed 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 日期:Tue Oct xxxxx -0400

In ProcessFile() function need to perform a .ToLower() on the file path string when adding it o the failedFiles collection.
于 2018-10-17T20:31:06.907 回答
0

这个命令对我很有效。我很感兴趣只看到在开始和结束引用之间的提交增量中发生变化的文件的名称,

 git log --no-merges --pretty=oneline --name-only <begin ref>..<end ref>

给出这样的输出,

<commit hash> <commit subject line>
foo.txtr
bar.txt
于 2020-10-13T15:11:32.953 回答
-1

我经常进入哦,亲爱的上帝,我做了什么的模式。具体来说,令人难以忘怀的恐惧与当前分支的最新变化有关。很高兴看到提交的责备游戏,我这样做如下。(假设您在当前感兴趣的分支中并且已经从dev分支出来。)

git log --oneline dev..

它为我提供了我所做的提交列表,以追溯到混乱、索多玛和戈莫拉不是现实的地方。此外,如果你像 LSD 上的 ADHD 猴子一样痴迷,它会有所帮助。一旦我得到了我的方位列表,我就可以缩小范围并按照本文中的说明进行分析——底部有一个关于限制输出的部分。

于 2020-03-15T12:47:37.413 回答