13

git commit打开文本编辑器并显示有关要提交的更改的一些信息:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#

#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#

我想扩展这个模板来显示

  • N最后提交消息的第一行和/或
  • 最后一次提交的完整消息

当前分支的。我怎样才能做到这一点?

4

1 回答 1

14

这将使用 git hooks

  • 在您的项目根目录中导航到.git/hooks/
  • 现在创建文件prepare-commit-msg
  • 添加以下代码:
#!/bin/sh
ORIG_MSG_FILE="$1"  # Grab the current template
TEMP=`mktemp /tmp/git-msg-XXXXX` # Create a temp file
trap "rm -f $TEMP" exit # Remove temp file on exit

MSG=`git log -1 --pretty=%s` # Grab the first line of the last commit message

(printf "\n\n# Last Commit: %s \n\n" "$MSG"; cat "$ORIG_MSG_FILE") > "$TEMP"  # print all to temp file
cat "$TEMP" > "$ORIG_MSG_FILE" # Move temp file to commit message
  • chmod +x prepare-commit_message

从Enhancing git commit messages借来的想法

%b您可以使用and获取整个提交消息%B,但可能会遇到多行提交的问题。可能会喜欢%-band %-B,或者只是在文档中阅读更多内容(滚动到格式)

于 2013-09-28T06:41:56.453 回答