来自版权控制与Git by Loeliger,2ed,
因为未明确识别启动分支的原始提交, 可以使用的名称在算法上找到提交(或其等效) 新分支分叉的原始分支:
git merge-base original-branch new-branch
在存储库的图表表示中,分支是提交路径是否正确?
如果查看存储库的图形,其分支名称指向每个分支的提示,但没有显示每个分支的开始提交,那么如何找到每个分支的开始提交?
答案 0 :(得分:5)
如果查看存储库的图形,并将分支名称指向某些提交作为分支的提示,您如何找到每个分支的开始提交?
git log --graph --decorate
// To get the same display as in the image below add the --oneline as well
git log --graph --decorate --oneline
答案 1 :(得分:4)
在存储库的图表表示中,分支是提交路径是否正确?
也许。这取决于你的意思是什么?" branch"和"路径"这里。 (你的意思是图理论"路径"?如果是这样,可能"不"因为"路径"只是意味着任何非空的步行通过一些节点和边缘没有通过节点加倍;虽然现在我们需要知道你的意思" branch" ...)
如果查看存储库的图形,其分支名称指向每个分支的提示,但没有显示每个分支的开始提交,那么如何找到每个分支的开始提交?
总的来说,你不能。这是图表的一个片段:
B - C
/ \
... o - A F - G <-- br
\ /
D - E
&#34;开始提交&#34;分支br
?它是B
,还是A
,还是早于A
(... - o
链中)的内容? D
和/或E
来自哪个分支(如果有的话)?
如果有其他名称,他们可能会提供足够的猜测线索:
B - C
/ \
... o - A F - G <-- br
\ /
D - E <-- newfeature
日志消息也可以提供线索;例如,F
的日志消息可能会显示为merge branch newfeature into br
。在这种情况下,可能D
是&#34;开始提交&#34;对于分支newfeature
以及提交F
的人,在分支git merge newfeature
上执行br
。因此,br
的来源可能在A
之前。
Reflogs也可能提供这些线索。
但是,除了日志消息之外,任何其他线索都可能消失。合并newfeature
后,我们可以删除名称(及其reflog);默认情况下,reflog条目在90天后过期(如果它们指向的对象无法从最末端的对象访问,则为30天)。
另一方面,同样的图表可能以不同的方式出现:
B - C
/ \
... o - A F - G <-- br
\ /
D - E <-- origin/br
origin/br
的起点可能与br
的起点相同,合并F
发生在有人做git merge
时(可能是git pull
)将他/她的工作与其他人的工作结合起来。两个用户都在自己的br
分支机构上工作,共享一些存储库或存储库(可能是一个集中式服务器)。
当你发现自己要求&#34;分支X&#34;的第一次提交是什么时,git会鼓励你停止询问(或问自己&#34;我为什么关心?&#34;)。