如何在Git的分支上获取更改
自从当前分支分支以来,在分支上获取提交日志的最佳方法是什么? 我迄今为止的解决方案是:
git log $(git merge-base HEAD branch)..branch
git-diff的文档表明, git diff A...B
等同于git diff $(git-merge-base AB) B
。 另一方面,git-rev-parse的文档表明r1...r2
被定义为r1 r2 --not $(git merge-base --all r1 r2)
。
为什么这些不同? 请注意, git diff HEAD...branch
给了我想要的差异,但相应的git log命令给我的比我想要的更多。
在图片中,假设:
x---y---z---branch / ---a---b---c---d---e---HEAD
我想得到一个包含提交x,y,z的日志。
git diff HEAD...branch
提供了这些提交 git log HEAD...branch
给出了x,y,z,c,d,e。 在修订列表的上下文中, A...B
是git-rev-parse
如何定义它的。 git-log需要一个修订列表。 git-diff
没有列出修订版本 - 它需要一两个版本,并且定义了A...B
语法来表示它在git-diff
页中的定义。 如果git-diff
没有明确定义A...B
,那么这个语法将是无效的。 请注意, git-rev-parse
联机帮助页在“指定范围”部分中描述了A...B
,并且该部分中的所有内容仅在修订范围有效(即需要修订版列表)的情况下才有效。
要获得只包含x,y和z的git log HEAD..branch
,请尝试使用git log HEAD..branch
(两个点,而不是三个)。 这和git log branch --not HEAD
不一样 - 不是git log branch --not HEAD
,意思是不在HEAD上的所有提交。
git cherry branch [newbranch]
当你在master
分支时,你正在问什么。
我也很喜欢:
git diff --name-status branch [newbranch]
这不完全是你问的,但在相同的背景下仍然非常有用。
你想看到的是传出提交列表。 你可以使用这个
git log master..branchName
要么
git log master..branchName --oneline
我在哪里假定“branchName”被创建为“主”的跟踪分支。
同样,要查看您可以使用的传入更改:
git log branchName..master
链接地址: http://www.djcxy.com/p/5433.html