我们的CI构建执行git合并--将$BRANCH压缩到master中,然后执行git commit --无编辑,如果构建通过,它将推送master (我们的CI是唯一可以推送到master的CI)。
然而,目前我们的git日志如下所示
我更喜欢将消息设置为分支所有挤压的提交(添加-m清除所有挤压的提交:( ),将用户设置为上次提交的用户名,并将电子邮件设置为name+上次提交的电子邮件。这个是可能的吗?
发布于 2020-05-02 05:54:34
通过将GIT_COMMITTER_NAME
和GIT_COMMITTER_EMAIL
环境变量设置为适当的值,可以在执行压缩时设置提交者名称和电子邮件。这将覆盖默认设置并允许您对其进行自定义。
至于修改消息,您并不真正想要--no-edit
,因为您确实想要编辑它,但是您也不想要-m
,因为它覆盖了整个消息。您真正需要的是一个脚本,它可以编辑要用作编辑器的提交消息。
您确实可以使用GIT_EDITOR
指定这样一个脚本,它应该接受一个参数作为要编辑的文件的名称,它应该就地编辑它(或者用您的副本覆盖该文件),并且它应该退出0。如果您使用的是标准的Unix环境,那么调用诸如ex
或ed
之类的程序的shell脚本可能是一个不错的选择。您还可以使用sed
写入临时文件,然后使用mv
覆盖原始文件。
因此,您的调用最终将如下所示:
GIT_COMMITTER_NAME="$(git log -1 --format=%an "$BRANCH")" \
GIT_COMMITTER_EMAIL="$(git log -1 --format=%ae "$BRANCH")" \
GIT_EDITOR="script/to/merge-editor" \
git merge --squash "$BRANCH"
https://stackoverflow.com/questions/61546172
复制相似问题