git log 没有办法单独查看当前分支上的 commit?

2018-12-03 17:51:48 +08:00
 0xABCD

背景是平时分支之间经常互相合并,我想要单独看一下在当前分支上的 commits log,没有找到对应的子命令?倒是找到一个--no-merges 选项,但是它只能把合并代码时新生成的 merge commit 去掉,不能把从别的分支上 merge 过来的 commit 去掉

6433 次点击
所在节点    程序员
12 条回复
AlisaDestiny
2018-12-03 18:09:30 +08:00
0xABCD
2018-12-03 19:16:54 +08:00
@AlisaDestiny 感谢回复,我搜到过这个答案,跟我描述的不符,他答案中提到的两个分支没有合并过,他是从 master 切出来的分支,然后比如有 3 个提交,他想找出来的是这 3 个新增的提交,而我的问题是,两个互相合并过的分支怎样才能找出最初在本分支上的提交,不包含 merge 过来的。比如 A 分支有 commit a,B 分支有 commit b,现在他俩一合并,那么 A 分支就有了 commit b,这时我怎么才能只过滤出 commit a,即一开始就是在 A 分支的 commit
hzwjz
2018-12-03 19:34:06 +08:00
dbolo123
2018-12-03 19:55:13 +08:00
这样呢?假设有 b1,b2,b3 只看 b1 的,git log b1 ^b2 ^b3
dbolo123
2018-12-03 19:57:59 +08:00
@dbolo123 看错了,请忽略
SoloCompany
2018-12-03 23:17:18 +08:00
> 两个互相合并过的分支怎样才能找出最初在本分支上的提交

你是指这个?
git log B..A
0xABCD
2018-12-04 00:07:33 +08:00
@hzwjz #3 仔细读完了你贴的链接,好像很接近我想要的了,我有个疑惑,这里的--first-parent 指的是哪个分支,假如有两个分支 dev 和 feature-1。有的时候是 feature-1 merge 到 dev,有的时候又是 dev merge 到 feature-1,那么 feature-1 分支上就会有这两种 merge commit (最终也会从 dev 拉到 feature-1 ),git 在这种情况下,--first-parent 应该指的是谁呢?
0xABCD
2018-12-04 00:14:24 +08:00
@SoloCompany #6 不是,你说的这个命令区分不出**已经相互合并**的两个分支的提交,因为两个分支的 commit 已经相同了,git log B..A 的意思是找出在 A 分支上但是不在 B 分支上的 commits
SoloCompany
2018-12-04 00:16:51 +08:00
那你可能想找的是 — no-merges
SoloCompany
2018-12-04 00:20:25 +08:00
发早了,请忽略

应该是说 — first-parent
所有的 merge parent 其实是有顺序的,你没有办法指定选择一个图里面的多条路径里面的一条,只能都选最左或最右
0xABCD
2018-12-04 00:25:21 +08:00
@SoloCompany #10 可是最左或者最右策略可能无法保证 first-parent 始终是同一个分支,那我只想看某个分支上的提交就无法实现了?
SoloCompany
2018-12-04 00:32:09 +08:00
你的理解就是错误的,一个分支的所有历史并不是线性的,而是多路径的,不存在你说的一个分支所对应的唯一路径

a merge b 的结果是 c
那么多 a 和 b 都同时属于 c 所在的分支,a 和 b 只有路径的区分(左还是右,或者说 1 还是 2 )

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/513915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX