Git流中功能分支上提交的命名约定

Git流中功能分支上提交的命名约定,git,git-flow,Git,Git Flow,这本书中有一点我不太明白 一旦某个功能分支feature/foo上的工作完成,并且它在develope上被合并,并且feature/foo已被删除,就没有进一步的跟踪表明提交是在feature/foo分支内完成的(请参阅) 然而,有时跟踪这些信息是有用的,尤其是为了可追溯性。假设分支是在问题跟踪器上打开票据后创建的。我希望能够看到,最好是通过git log,在这个分支上做了哪些工作,即使在它被删除之后 本质上,我是在问,是否有可能通过git log获得源代码共享网站(如Github)上已关闭的问

这本书中有一点我不太明白

一旦某个功能分支
feature/foo
上的工作完成,并且它在
develope
上被合并,并且
feature/foo
已被删除,就没有进一步的跟踪表明提交是在
feature/foo
分支内完成的(请参阅)

然而,有时跟踪这些信息是有用的,尤其是为了可追溯性。假设分支是在问题跟踪器上打开票据后创建的。我希望能够看到,最好是通过
git log
,在这个分支上做了哪些工作,即使在它被删除之后

本质上,我是在问,是否有可能通过git log获得源代码共享网站(如Github)上已关闭的问题页面上可以找到的相同类型的信息


在我看来,如果不使用功能分支的名称作为每个提交消息的前缀(手动或通过钩子),那么就没有简单的方法。

您不必在每个提交消息的前面加上分支的名称。 相反,使用git的强大功能:

git log --all --source --pretty=oneline --graph

将向您显示一个提交图,对于每个分支,您可以通过合并提交的名称看到哪个分支合并到您的开发分支中。

使用
gitk
进行合并提交,它将显示哪些提交来自您的功能分支


或者您可以使用git log--graph--abbrev commit--decoration--date=relative--all

虽然这对于简单而短暂的历史非常好,但如果您处理一个存储库,它有十个常规开发人员,每天创建/合并几个功能分支,那么它就变得不切实际了。如果不在
git log
图形上滚动小时,您如何找到在某个分支上完成的工作?也许您可以执行
git log--all--source--pretty=oneline--graph | less
,然后使用
/
搜索分支名称,搜索词分支名称将从历史记录中消失-这就是全部问题所在。正如在另一个答案中所讨论的,正如@gaurav tiwari所建议的,我认为正确的做法是在删除时创建分支的标记。不管怎样,谢谢你的帮助。分支名称是以合并提交的名称命名的。不一定-我经常写一个功能的简短描述,而不是默认消息,因为我发现它更清晰。但是我同意,一个可以编写标记或在提交消息中添加名称的钩子可以工作。虽然我发现标签在读取git日志时会提供较少的视觉污染,但是仍然有两个命令需要发出,一个是查找与分支名称对应的合并提交(从,然后是您的
git log
选项。它还意味着保持合并提交消息的原样,以保留分支名称的引用。我一直在寻找一行,但这当然是一行-假设合并提交消息未被修改。是的,您可以保持合并提交消息的原样。此外,为了使其保持原样,您还可以更容易你也可以有一个钩子来标记合并,你可以用分支名称对标记进行注释。这将使你更容易找到合并提交。作为一种效率不高的黑客,你可以在删除分支之前编写一个钩子来标记你的分支。这意味着每当你做
git log
时,你总是会得到你分支的日志。这不是b比保留分支更好你为什么说它不比保留分支好?只要你使用一个轻量级标记,它就不需要花费任何费用,对吗?为什么这不是很有效?你两个评论之间的区别只是合并提交或最后一个重要的评论被标记为分支的名称,没有分支和标记从技术上讲,它们只是表示一个提交对象。标记的重量并不比分支轻。区别在于标记位于refs/tags中,而分支位于refs/head中。更简单地说,它们只是git中提交的指针。但是,如果您继续删除主题分支,标记将允许您跟踪。这可以n可以使用git更新挂钩轻松实现