我在发行分支上,我在其中应用 master (主要开发)中精选的提交。
我想检查是否已经复制了一些旧的提交,所以我开始使用git log
和grep
查找其中一个提交哈希。
在分支上时,我通常将与 master 有关的最新提交与以下内容进行比较:
git log --oneline -20
和
git log --oneline -20 master
但是现在,我想检查一定范围的提交,在经历了一些试验和错误之后,我最终使用了:
git log --oneline <myhash>~..HEAD master
检出 master 后,将给出预期的结果-从<myhash>
(含)到最新的master提交列表。
但是,如果在其他分支上运行时,同一命令会产生不同的结果(实际上,它似乎提供了从分支开始到最新的所有提交):为什么?
答案 0 :(得分:3)
如果要查看从特定其他提交开始的分支上的所有提交,请使用以下命令:
git log --oneline start..branch
其中start
是起始提交,branch
是最终提交。 Git将显示branch
可以到达的所有提交,而排除start
可以到达的所有提交(通过git log ^start branch
实现相同的行为,即“未开始”和“分支”)
当您执行start..HEAD master
时,您将获得开始与当前提交/分支之间的所有提交 AND 从master
可以到达的所有提交。在这种情况下,您实际上指定了3个提交:^start
,HEAD
和master
。然后,Git将遍历该图以为您提供结果:从HEAD
可以到达的所有提交(当前的提交/分支),从master
可以到达的所有提交,但是排除从start
可以到达的所有提交