我如何运行git日志来查看仅针对特定分支的更改?

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

要使用什么Git命令来只显示特定分支的提交?

注:

配置信息:

[branch "my-branch"]
remote = origin
merge = refs/heads/master
423107 次浏览

假设你的分支是从master创建的,那么在分支中(也就是说,你已经签出了分支):

git cherry -v master

git log master..

如果你不在分支中,那么你可以将分支名称添加到“git log”命令中,就像这样:

git log master..branchname

如果你的分支是由origin/master组成的,那么说origin/master而不是master

使用:

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

它只针对目标分支(当然——graph,——abbrev-commit——装饰都比较抛光)。

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

它可以防止显示提交叉。

我所遇到的问题,我认为与此类似,是师父太超前于我的分支点的历史是有用的。(导航到分支点将花费太长时间。)

经过一些尝试和错误,这大致给了我想要的:

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

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

git log branch_name --author='Dyaniyal'

只需运行git log origin/$BRANCH_NAME

对于那些使用Magit,点击l=m切换--no-merges和# eyz3切换--first-parent

然后再次点击l来显示当前分支的提交(没有任何提交合并到它上面)直到历史的结束,或者,如果你想让日志结束在它从master分支出来的地方,点击o并输入master..作为你的范围:

enter image description here

develop分支上,并希望看到最近PR的列表。

PROMPT> git log --first-parent --pretty=oneline 0a805f46957a957161c5ed4e08081edeed9b91e7..6aae236484dc1881f5dbdef0f529eb95c6ef7bd5
0a805f46957a957161c5ed4e08081edeed9b91e7 Merged PR 1984/3: Fixed crash 2.
8d51abb53403e10e6484dc3c0569a5792f1x3734 Merged PR 1984/2: Fixed crash 1.
6aae236484dc1881f5dbdef0f529eb95c6efcbd5 Merged PR 1984/1: Downgraded from windows 11 to windows 3.11.
git log $(git branch --show-current)

这是一个狡猾的新时代GUI的答案,但无论如何,在Xcode中显然有一个可视化工具

我修改了建议的答案,以包括lg1外观。

[alias]
lg1b = "!cd -- \"${GIT_PREFIX:-.}\" && CURRENT_BRANCH=$(git branch --show-current) && git log $CURRENT_BRANCH --graph --abbrev-commit --pretty='format:%C(bold blue)%h%C(reset) %C(bold green)(%ar)%C(reset) %s %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --decorate --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v refs/heads/$CURRENT_BRANCH) #"

对于lg1命令,请参考此命令:漂亮的Git分支图