一些Git命令采用提交范围,一个有效语法是用两个点分隔两个提交名称..,另一个语法使用三个点....
两者有什么不同?
自从当前分支分支以来,在分支上获取提交日志的最佳方法是什么?我目前的解决方案是:
git log $(git merge-base HEAD branch)..branch
Run Code Online (Sandbox Code Playgroud)
git-diff的文档表明它git diff A...B等同于git diff $(git-merge-base A B) 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.以下命令之间有什么区别?:
git diff foo master # a
git diff foo..master # b
git diff foo...master # c
Run Code Online (Sandbox Code Playgroud)
diff手册谈到它:
比较分支机构
Run Code Online (Sandbox Code Playgroud)$ git diff topic master <1> $ git diff topic..master <2> $ git diff topic...master <3>
- 主题提示与主分支之间的更改.
- 与上述相同.
- 自主题分支启动以来主分支上发生的更改.
但对我来说并不完全清楚.
我正在寻找一种方法来查看活动分支上的所有提交,因为分支点(包括它)和希望从master分支.
例如情况如:
A-B-C-D (master)
\
E-F (branch A)
Run Code Online (Sandbox Code Playgroud)
我希望得到提交F,E和B,而F是HEAD.
并为
A-B-C-D (master)
\
E-F (branch B)
\
G (branch C)
Run Code Online (Sandbox Code Playgroud)
如果G是当前HEAD,我想要提交G,F,E,B.使用--graph选项显示此信息也很棒.
现在我想出来了
git log master^..HEAD
Run Code Online (Sandbox Code Playgroud)
但它似乎显示太多信息(如来自其他分支机构的提交).谢谢你的帮助!