识别在分支上完成的提交

时间:2018-10-11 07:55:58

标签: git

我有一个功能分支-我们称之为featureX' 当我在开发它时-我创建了多个提交,将它们发送到服务器,对其进行测试-还有多个提交等。 稍后,我将该分支合并到master-我想在历史记录中查看哪些提交在提交给master之前是该featureX分支的一部分。

目前,我的方式是记住每次提交时都将其添加到评论中-但是我很懒,而且并不总是记得这样做。

是否可以标记这些提交,或自动在其注释中添加带有分支名称的前缀?

我在Visual Studio中使用git,并且使用的是UI

2 个答案:

答案 0 :(得分:3)

是的,有一种方法可以自动在其注释中添加带有分支名称的前缀。可以使用commit-msg挂钩来实现。例如,如果您将此代码写入文件.git/hook/commit-msg

#!/bin/bash
current_branch="$(git rev-parse --abbrev-ref HEAD)"
echo '['"$current_branch"'] '$(cat "$1") > "$1"

您所有的提交消息都将自动以“ [branch_name]”为前缀。

编辑:

我实际上设法在Windows中编写了相同的脚本

在名为.git/hooks/commit-msg.bat的文件中编写以下代码(几乎等同于上面三行):

@echo off

FOR /F "tokens=* USEBACKQ" %%F IN (`git rev-parse --abbrev-ref HEAD`) DO (
SET current_branch=%%F
)

FOR /F "tokens=* USEBACKQ" %%F IN (`type .git\COMMIT_EDITMSG`) DO (
SET commit_msg=%%F
)
SET p_commit_msg=[%current_branch%] %commit_msg%
ECHO %p_commit_msg% > .git\COMMIT_EDITMSG

在文件.git/hooks/commit-msg中,按以下方式调用此脚本:

#!/bin/bash
cmd.exe /c "commit-msg.bat"

答案 1 :(得分:0)

您可以使用here所述的commit.template设置。

$ git config commit.template /path/to/git-commit-template.txt

这将仅设置当前存储库的模板。您可以添加--global标志以应用于所有存储库。

注意:它将适用于所有提交,不仅适用于featureX分支,因此在完成此分支的工作后,您需要编辑模板。

此外,如果您忘记在注释中添加分支名称,则可以检查here如何在合并后知道合并之前分支中包含哪些提交。