为了防止我们的CI系统在每次提交时构建,我们必须在每次提交结束时附加[skip ci]
(git commit -m "... [skip ci]"
)。
是否可以为此制作别名?
我一直在玩:
[alias]
cms = !git commit -m "${1} \[skip ci\]" $1
答案 0 :(得分:2)
如果用户想要跳过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