我正在寻找别名git push
Git 中的实际命令,以便在提交到 GitHub 之前运行单元测试之类的东西。
这是我的config
文件.git/
[alias]
push = !echo "custom push"
kk = !echo "hi" # => this works...
它似乎忽略了推动。这可能吗?如果这是不可能的,还有其他选择吗?
我写了这个来对抗git push
打印出我想运行但没有运行它的讨厌!是的,这是有原因的(你不应该将每一块垃圾都推送到远程),但我的远程是我的 GitHub 分支,我可能会遭受任何被推送到那里的垃圾。
这是基于Eugene Kay 的.bashrc
(我从那里保留了cd
但删除了which git
对我不起作用的部分)。添加到.bashrc
或.zshrc
品尝:
function git() {
# Path to the `git` binary
GIT="/usr/bin/git"
# Sanity check
if [ ! -f ${GIT} ]
then
echo "Error: git binary not found" >&2
return 255
fi
# Command to be executed
command=$1
# Remove command from $@ array
shift 1
# Check command against list of supported commands
case $command in
"cd")
cd $(git rev-parse --show-toplevel)/${1}
;;
"push")
if [ -z "$1" ]
then
$GIT push || $GIT push -u origin $($GIT rev-parse --abbrev-ref @)
else
$GIT ${command} "$@"
fi
;;
*)
# Execute the git binary
$GIT ${command} "$@"
;;
esac
# Return something
return $?
}
由于与 push 命令冲突,您不能为 push 设置别名,但您可以尝试使用“pre-push”钩子,有关详细信息,请参阅以下补丁。
另一种方法是在 GitHub 上使用post-receive挂钩,您可以在其中配置它以向集成服务器发送 POST,该服务器将运行单元测试等并批准或拒绝更改。但是,根据您的设置,这可能不切实际。
我不会创建别名,而是使用 git 的 pre-commit 钩子。