用父提交的文本启动git提交的文本

用父提交的文本启动git提交的文本,git,git-commit,Git,Git Commit,在git中创建新提交时,可以通过指定git commit-t或commit.template环境变量,指定希望提交消息编辑器以文件内容启动。有没有办法指定您总是希望使用父提交的全文作为模板 上下文:我通常的代码库和其他许多代码库一样,需要对提交所处理的bug/问题进行注释,以便在每次提交中出现。记住bug/问题编号很难,而且我经常会有一堆关于同一主题的提交,要按顺序提交。使用诸如git commit之类的咒语是很尴尬的;Ctrl+Z;g log-1;Shift+Ctrl+C;fg;Shift+C

在git中创建新提交时,可以通过指定
git commit-t
commit.template
环境变量,指定希望提交消息编辑器以文件内容启动。有没有办法指定您总是希望使用父提交的全文作为模板


上下文:我通常的代码库和其他许多代码库一样,需要对提交所处理的bug/问题进行注释,以便在每次提交中出现。记住bug/问题编号很难,而且我经常会有一堆关于同一主题的提交,要按顺序提交。使用诸如
git commit之类的咒语是很尴尬的;Ctrl+Z;g log-1;Shift+Ctrl+C;fg;Shift+Ctrl+V
,这是我通常被迫执行的操作。

您只需运行:

git commit -C HEAD --reset-author -e
或者更一般地说:

git commit -C $TEMPLATE_COMMIT_SHA1 --reset-author -e
相关的在线文档项目包括:

  • -C
    --重用消息=

    获取现有的提交对象,并重用日志消息和 创建提交时的作者身份信息(包括时间戳)

  • -e
    --编辑

    从具有-F的文件、具有-m的命令行以及具有-C的提交对象中获取的消息通常用作未经修改的提交日志消息。此选项允许您进一步编辑从这些来源获取的消息

  • 正如@KevinReid所建议的:

    --重置作者

    -C/-C/--amend选项一起使用时,或在冲突的cherry pick之后提交时,声明结果提交的作者现在属于提交者。这也会更新作者时间戳

如果希望使此命令更实用,例如,通过依赖env。变量
TEMPLATE\u COMMIT\u SHA1
,可以定义git别名,例如:

# "committ" stands for "commit-template"
git config alias.committ '!f(){ set -x; git commit -C "${TEMPLATE_COMMIT_SHA1:-HEAD}" --reset-author -e "$@"; }; f'

# or if you prefer to make this alias available for all repos:
git config --global alias.committ '!f(){ set -x; git commit -C "${TEMPLATE_COMMIT_SHA1:-HEAD}" --reset-author -e "$@"; }; f'

# demo
touch a; git add a; git committ

export TEMPLATE_COMMIT_SHA1=HEAD^^^
touch b; git add b; git committ

这绝对比我一直在做的要好!是否可以将其设置为envvar,如
commit.template
?是的,您可以为此设计一个git别名;我将更新我的回答,考虑同时使用
--reset author
-C
来避免复制上一次提交的时间戳的行为,
-e-C
相当于
-C
/
--重新编辑消息
@JacobKopczynski:),但仍然需要
--重置作者