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

Hig*_*ife 350 git branch git-log git-branch

我有一个跟踪远程/主分支的本地分支.运行后git-pullgit-log,日志将显示在远程追踪分支的所有提交以及当前分支.但是,因为对远程分支进行了如此多的更改,我只需要查看对当前本地分支的提交.

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

笔记:

配置信息:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud)

Way*_*rad 473

假设您的分支是创建的master,那么在分支中(即,您已检出分支):

git cherry -v master
Run Code Online (Sandbox Code Playgroud)

要么

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

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

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

如果您的分支被取消origin/master,那么请说origin/master而不是master.

  • 完善!`git log --no-merges master..`正是我所需要的. (91认同)
  • 请注意,这不考虑樱桃选择. (6认同)
  • 如何做到这一点,不需要我输入/知道父分支?:) (4认同)
  • 为了了解变化率,我使用了以下咒语 :) 生成单行日志格式,首先显示作者姓名,然后是提交的相对年龄:`git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..` (4认同)
  • @HighwayofLife:`--no-merges`可能看起来它只显示来自特定分支的提交,但它实际上只显示没有导致合并的提交 (3认同)
  • 不应该读?git log master .. <your branch> --oneline --no-merges (2认同)
  • @MohammadSalehi `..` 被用作 _range 运算符_。当人们不想指定单个提交,而是要指定一系列提交时使用它。`man gitrevisions` 将向您展示更多关于如何指定 git 修订版本的信息,包括使用 `..` (2认同)

yer*_*gin 86

使用:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>
Run Code Online (Sandbox Code Playgroud)

它仅适用于目标分支(当然--graph, - shared-commit --decorate是更多的polisihing).

关键选项是--first-parent:"在看到合并提交时只跟随第一个父提交"(https://git-scm.com/docs/git-log)

它可以防止提交提示叉.

  • `--first-parent <branch_name>`是选项.工作! (23认同)
  • 分支名称是什么,我只想看到历史的分支?在只有3个更改的分支上,这显示了数百个. (3认同)
  • `--first-parent &lt;branch_name&gt;` 也对我有用!我最终得到了`git log --first-parent $current_branch_name --no-merges`的别名。作为对@EdRandall 的回应,它将显示分支上的提交 + 分支上的提交。例如: (3认同)
  • 哎呀,我很快就提交了,这是一个例子:你在主人身上提交了A和B. 你从master分支`new_feature`.您将提交C和D添加到它.然后将E和F添加到master.然后将master合并到`new_feature`.在`new_feature`上使用`git log`,你会看到"merge master",F,E,D,C,A,B.使用`git log --first-parent new_feature --no-merges`,你'见D,C,A,B (2认同)

小智 18

如果您只想要在特定分支中完成的那些提交,请使用以下命令.

git log branch_name --author='Dyaniyal'
Run Code Online (Sandbox Code Playgroud)

  • 如果使用此命令,则您的名称必须为“ Dyaniyal”。 (3认同)
  • 如果你赶时间,你可以输入: git log --author=Dya 假设你是唯一一个名字以 Dya 开头的作者。 (2认同)

GPH*_*ley 8

我认为与此类似的问题是,掌握了我的分支点,因为历史很有用.(导航到分支点需要太长时间.)

经过一些试验和错误,这给了我大概我想要的东西:

git log --graph --decorate --oneline --all ^master^!
Run Code Online (Sandbox Code Playgroud)


Mah*_*ram 6

赶紧跑 git log origin/$BRANCH_NAME