如何运行git log以仅查看特定分支的更改?


395

我有一个本地分支跟踪远程/主分支。运行git-pull和之后git-log,日志将显示远程跟踪分支以及当前分支中的所有提交。但是,由于对远程分支进行了太多更改,因此我只需要查看对当前本地分支所做的提交。

仅显示特定分支的提交的Git命令是什么?

笔记:

配置信息:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master

Answers:


526

假设您的分支是根据创建的master,则在分支中(即,您已将分支签出):

git cherry -v master

要么

git log master..

如果您不在分支中,则可以将分支名称添加到“ git log”命令中,如下所示:

git log master..branchname

如果您的分支是由分支机构组成的origin/master,请说origin/master代替master


100
完善!git log --no-merges master..正是我所需要的。
生命公路

3
@HighwayofLife:--no-merges可能似乎只显示来自特定分支的提交,但实际上只显示未导致合并的提交
rynmrtn 2013年

5
不需要我输入/知道父分支的方法如何呢?:)
ELLIOTTCABLE

1
为了了解变化率,我使用以下咒语:)生成单行日志格式,其格式为作者姓名,然后是提交的相对年龄:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman 2013年

2
不应该读?git log master .. <您的分支> --oneline --no-merges
Alex Nolasco

104

采用:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

它仅适用于目标分支(当然--graph,--abbrev-commit --decorate更为完善)。

关键选项是--first-parent:“在看到合并提交后仅跟随第一个父提交”(https://git-scm.com/docs/git-log

它防止显示提交叉。


25
--first-parent <branch_name>是选项。工程!
parasrish

3
分支名称在哪里,我只想查看其历史的分支?在只有3个更改的分支上,这向我显示了数百个。
Ed Randall

1
--first-parent <branch_name>也为我工作!我以的别名结尾git log --first-parent $current_branch_name --no-merges。响应@EdRandall,它将显示分支上的提交+来自分支的提交。例如:
rachel

2
糟糕,我很快提交了以下示例:您已经在master上提交了A和B。您是new_feature从主人那儿分出来的。您将提交C和D添加到其中。然后将E和F添加到master。然后,您将master合并到new_feature。使用git lognew_feature,你会看到“合并大师”,F,E,d,C,A,B。使用git log --first-parent new_feature --no-merges,你会看到d,C,A,B。
雷切尔

24

如果只希望您在特定分支中完成的提交,请使用以下命令。

git log branch_name --author='Dyaniyal'

13

我遇到的问题(我认为与此类似)是,师父距离我的分支点太远了,无法使用历史记录。(导航到分支点将花费太长时间。)

经过反复试验,这大致满足了我的需求:

git log --graph --decorate --oneline --all ^master^!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.