我正在使用命令git log --pretty=format:"{ref:%S,From:%P}|"
,但是它无法正常工作。
Print from the log
我希望能像ref:'refs / heads / master
一样重新获得日志我机器上的Git版本是2.25.0.windows.1。我需要从日志中获取提交的分支。我无法使用git reflog,因为我使用的是“ SimpleGit”库来获取此信息,并且该库不支持git reflog。
答案 0 :(得分:0)
在命令行上没有列出分支名称的情况下,%S
会始终产生HEAD
,因为这是在图形遍历期间到达提交的名称。
我需要从日志中获取提交的分支。
提交没有分支。相反。考虑一下这个图片段,左侧有较旧的提交,右侧有较新的提交,为方便起见,用单个大写字母替换了哈希ID:
I--J <-- branch1
/
...--G--H
\
K--L <-- branch2
很明显,提交I-J
是branch1
独有的,而提交K-L
是分支2独有的。但是-警告,这是一个棘手的问题-哪个分支通过{ {1}}?
尽管这是一个棘手的问题,但它似乎也是您尝试让Git使用H
为您解答的问题。您不能,因为这是一个棘手的问题。
此处提交%S
和G
不在H
或 branch1
上。它们同时位于branch2
和 branch1
上。
如果我们添加新的分支名称,例如branch2
,指向master
:
H
然后,导致 I--J <-- branch1
/
...--G--H <-- master
\
K--L <-- branch2
并包含H
的提交现在位于所有三个分支上。
任何给定的提交(通过其哈希ID,即其真实名称)都可以位于任意数量的分支上。该数字包括零!提交可以在 no 分支上。标记的提交可以像这样,git stash
所做的提交通常 都是这样,完全在分支上。
包含一个给定提交的分支集可以从一分钟更改为下一分钟,因为控制Git存储库的人可以添加,删除或更新分支名称,并且可以添加新的提交到存储库。添加合并提交往往会添加更多可以到达给定提交的名称,尽管详细信息取决于您之后对名称的处理方式。
给出任何提交哈希ID,但是,您可以使用以下命令找到要做包含该提交的分支名称集:
git branch --contains <hash>
请注意,这可能会产生零个,一个或多个分支名称。