2014-02-12 43 views

回答

1

我不认为在所有情况下都有完全一般的答案。考虑:

A----B----C 
     \ 
     D----E----F 
      \ 
       G----H----I 

包含提交的分支在哪里创建的?它是从E还是从B创建的分支。两者都是可能性 - 在一种情况下,您有一个从B创建的分支,然后是从E创建的另一个分支,另一个是从B创建的D,和则F从e中创建的 - 换句话说,同一棵树可以这样表示:

A----B----C 
     \ 
     D----E----G----H----I 
      \ 
       F 

甚至这样的:

A----B----D----E----G----H----I 
     \   \ 
     C   F 

所有三种以上的在拓扑上是等价的,所有三个会给出“我从哪里开始的分支”的不同答案...

+0

分支'I'开始于它首先分支的提交。单从dag中并不明显,但信息由'git'保留。 – chepner

+0

@chepner如果所有分支都是在本地创建的,则为true。但是,如果'userA @ repoA'创建分支,将其推送到'origin',然后'userB @ repoB'获取并跟踪该分支,并向其添加更多内容,那么该信息可能不适用于'userB @ repoB'没有可观的法医努力......在一般情况下,你所拥有的只是DAG。日期邮票等可能会添加一些额外的信息,但它不是一般的简单的一行... – twalberg

2

请参阅.git/logs/refs/heads/BRANCHNAME。第一行应包含有关创建分支的信息,包括创建分支的用户以及分支“分叉”的提交。

git reflog可用于以编程方式检查文件;详情请参阅git help reflog

+1

我不认为你会在这里找到任何东西,除了*本地*分支的信息。没有关于远程创建的分行的任何信息。 – larsks

相关问题