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

How to retrieve the branch where a commit was created originally using LibGit2Sharp?

如何检索最初使用 LibGit2Sharp 创建提交的分支? 假设我有两个分支(development,feature1),它们有几个提交并在一段时间后合并。当我检索所有提交和它们所属的分支时,每个提交都与这两个分支相关联。所以无法确定哪个是原始源代码分支。

谢谢!

不,这不可能... Git 分支是指针,分支名称未写入提交元数据。一旦移动,你就无法弄清楚过去(使用 git 或 libgit2sharp)。

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

但我不明白这样的需求。通常,这是有用的礼物。在 分支中是提交。

也许版本控制策略不好?在发布时存储提交的 Shaw 是一个更好的主意....

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

分支 names 在很大程度上是短暂的,可以随时创建和销毁,但有一个警告:any[=33 无法访问的提交=] 名称受垃圾收集的影响。但是,如果可以从分支名称 B1、B2、B3 访问提交 C,则包含提交 C在所有三个分支中。删除名称 B2 并提交 C 现在包含在分支 B1B3[ 中=33=].

(保护提交的名称不必是 分支 名称。标签名称,或 stash 引用,或远程跟踪分支名称,或 refs name-space 中的任何其他名称足以保护提交。[这不是完整列表,但涵盖了所有正常可靠的情况。]此规则递归适用于所有其他受保护的也提交:如果提交 C 可以从受保护的提交 P 访问,那么 C 也受到保护, C 反过来保护所有可从 C 访问的提交。)