Git Alias:追加字符串以提交消息

时间:2014-10-02 13:03:05

标签: git alias commit

为了防止我们的CI系统在每次提交时构建,我们必须在每次提交结束时附加[skip ci]git commit -m "... [skip ci]")。

是否可以为此制作别名?

我一直在玩:

[alias]
  cms = !git commit -m "${1} \[skip ci\]" $1

2 个答案:

答案 0 :(得分:2)

Commit Message Hooks

如果用户想要跳过CI或不跳过CI,我会考虑使用y / n提示用户而不是别名。

我的bash mojo不够好,无法通过Git Alias知道你想要完成的是什么。

真的很粗糙的示例代码。工作,但不包括所有情况。

将它放在.git / hooks / prepare-commit-msg中并确保它是可执行的

#!/bin/sh
exec < /dev/tty
echo "Skip CI?"
select yn in "Yes" "No"
do
   case ${yn} in
      "Yes")
         echo "[skip ci]" >> $1
         break;;
      "No")
         break;;
   esac
done

运行commit时会发生这种情况。如果您键入&#34; 2&#34;如果输入&#34; 1&#34;那么,提交会正常进行。然后它添加你的跳过ci消息。需要扩展适当的解决方案来处理Merge提交,提交模板等事情。

(master)$ git commit -m "also junk"
Skip CI?
1) Yes
2) No
#? 1
[master bfa5200] also junk [skip ci]]
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bar
me@myvm:/scratch/commit_msg  (master)$ git log 
commit bfa5200096f7251e2dc8fc457af81c59519901f3
Author: Andrew C <andrew.c@nowhere.com>

    also junk
    [skip ci]

答案 1 :(得分:0)

虽然不完全符合您的要求,但我发现了一个公共 gist,它添加了一个 git 别名,以便您可以在创建提交后添加“[skip ci]”。

向要点的作者致敬;我没有想出这个解决方案,但我证实它有效!

首先添加新别名:

$ git config --global alias.skip-ci '!git reset && COMMIT_MSG=`git show --format=format:%B -s` && git commit --allow-empty --amend -m "[skip ci] $COMMIT_MSG"'

然后就可以喜欢了

$ git commit -m "Updated README.md"
$ git skip-ci
$ git push