漂亮的格式%S无法正常工作

时间:2020-02-02 20:08:11

标签: git

我正在使用命令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。

1 个答案:

答案 0 :(得分:0)

在命令行上没有列出分支名称的情况下,%S始终产生HEAD,因为这是在图形遍历期间到达提交的名称。

我需要从日志中获取提交的分支。

提交没有分支。相反。考虑一下这个图片段,左侧有较旧的提交,右侧有较新的提交,为方便起见,用单个大写字母替换了哈希ID:

          I--J   <-- branch1
         /
...--G--H
         \
          K--L   <-- branch2

很明显,提交I-Jbranch1独有的,而提交K-L是分支2独有的。但是-警告,这是一个棘手的问题-哪个分支通过{ {1}}?

尽管这是一个棘手的问题,但它似乎也是您尝试让Git使用H为您解答的问题。您不能,因为这是一个棘手的问题。

此处提交%SG不在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>

请注意,这可能会产生零个,一个或多个分支名称。