如何使用LibGit2Sharp检索最初创建提交的分支?

时间:2016-08-25 20:32:32

标签: c# git libgit2sharp

如何检索最初使用LibGit2Sharp创建提交的分支? 假设我有两个分支(开发,feature1),它们有几个提交,并在一段时间后合并。当我检索所有提交和它们所属的分支时,每个提交都与两个分支链接。因此无法确定哪个是原始源分支。

谢谢!

2 个答案:

答案 0 :(得分:1)

不,那是不可能的...... Git分支是指针,分支名称不是在提交元数据中写入的。移动后,你无法弄清楚过去(使用git或libgit2sharp)。

解决方案可能是解析分支reflog,如果有关提交的行仍在那里,不是太旧并且已从日志文件中删除。

但我不明白这种需要。通常,这是有用的礼物。在女巫分支是承诺。

也许是一个糟糕的版本策略?在发布时存储提交Shaw是一个更好的想法......

答案 1 :(得分:1)

Git不存储任何此类信息,这意味着无论您使用何种访问方法,它都无法检索。

分支名称在很大程度上是短暂的,可以随时创建和销毁,但有一点需要注意:任何名称无法访问的提交受垃圾影响 - 采集。但是,如果可以从分支名称​​ B1,B2,B3 访问提交 C ,则提交 C 包含在所有三个分支中。删除名称​​ B2 并提交 C 现在包含在分支 B1 B3 中。

(保护提交的名称不必是分支名称。标记名称,stash引用,远程跟踪分支名称或任何其他名称在refs名称空间中,足以保护提交。[这不是一个完整的列表,但涵盖了所有正常的可靠情况。]此规则也递归地应用于所有其他受保护的提交:if commit 可以从受保护的提交 P 访问C ,然后 C 也受到保护,而 C 依次保护从 C 的。)