如何在git中检测分支点?

如何在git中检测分支点?,git,Git,我正在尝试确定分支中的第一个提交。我读过很多其他的SO帖子(包括),但是他们没有告诉我我想要什么 通过查看分支图,我可以确定分支何时偏离主分支(在附带的图像中,紫色线来自“主分支上的第二次提交”),但是我无法使用命令行工具在文本中复制这一点(git log--graph工作,但不是我要的) 我所追求的提交是0124fc8,即第一次提交到feature/new分支 所有合并回主服务器的操作都是通过--无ff完成的 我已经尝试了git合并基本功能/新的分支主机,但是这给了我0f5e36f(--所有都

我正在尝试确定分支中的第一个提交。我读过很多其他的SO帖子(包括),但是他们没有告诉我我想要什么

通过查看分支图,我可以确定分支何时偏离主分支(在附带的图像中,紫色线来自“主分支上的第二次提交”),但是我无法使用命令行工具在文本中复制这一点(
git log--graph
工作,但不是我要的)

我所追求的提交是
0124fc8
,即第一次提交到feature/new分支

所有合并回主服务器的操作都是通过
--无ff
完成的

我已经尝试了
git合并基本功能/新的分支主机
,但是这给了我
0f5e36f
--所有
都是这样做的)

我还尝试了
git rev list--boundary feature/new branch…master
,它给了我几个提交,但没有一个是我想要的


如果没有合并回主版本,那么您需要的是
git rev list master..feature/new branch
的最后一个条目<版本列表中的code>a..b提供了
b
历史记录中不在
a
历史记录中的所有提交。但既然你已经合并了,feature/new branch历史记录中的所有提交也都在master历史记录中,所以我们必须更聪明一点

你链接的问题(而不是)提供了一个很好的开端。诀窍是使用
--第一个父对象
,以避免将所有合并到master的右侧视为master历史的一部分
git rev list——第一个父级master
提供直接提交到master的所有提交,并且不显示任何合并的提交。唉,
——第一个父项
不能以我们想要的方式与
结合。
,因此我们必须使用
diff
制作我们自己的
等价物。我们可以使用
diff
获取feature/new branch历史记录中所有提交的列表,并删除master“direct”历史记录中的所有提交。我使用反斜杠转义将一个命令拆分为几行:-

diff --new-line-format=%L --old-line-format= --unchanged-line-format= \
    <(git rev-list --first-parent master) \
    <(git rev-list --first-parent feature/new-branch)
diff--新行格式=%L--旧行格式=--未更改的行格式=\

成功!这个命令给出的最后一次修改就是我想要的。为了回答你的问题,我想要它做什么,我试图建立一个git历史视图,告诉我创建分支的日期。Git不直接存储这些信息,所以我能得到的最接近的信息是分支上的第一次提交。我很可能在第一次承诺之前就创建了分支机构,但我认为这是一个边缘案例。