Git alias推送失败,出现错误
我正在创建一个git别名,如下所示(为了可读性,将其分成几行): 此命令将Git alias推送失败,出现错误,git,Git,我正在创建一个git别名,如下所示(为了可读性,将其分成几行): 此命令将master合并到release,从命令行params创建一个新标记,并将其推送到origin/release。它一直工作到标记创建的点。当我跑步时,我会得到以下信息: Switched to branch 'release' Already up-to-date. error: src refspec Testing does not match any. error: failed to push some refs
master
合并到release
,从命令行params创建一个新标记,并将其推送到origin/release。它一直工作到标记创建的点。当我跑步时,我会得到以下信息:
Switched to branch 'release'
Already up-to-date.
error: src refspec Testing does not match any.
error: failed to push some refs to 'git@github.com:Stockopedia/prototype.git'
我有两个问题:
这可能更好,但我还没有完全测试它-它的格式是为了可读性,而不是为了外壳的使用,您可能需要调整换行符和间距:
git config --global alias.make-release '
! _() { if test "$1" != "2" ;
then
echo "git make-release TAG_NUMBER DESCRIPTION"
return 1
fi;
git checkout release &&
git merge master &&
git fetch --tags &&
git tag -a "$1" -m "$2" &&
git push origin release --tags
}; _'
我认为最大的问题是误解别名是如何扩展的。您发布的代码会导致一个扩展,如果git make release arg1 arg2看起来像shell:
_() { if .... }; _ "$#" && git checkout .... && git push origin release --tags arg1 arg2
如果$#
、$1
和$2
的扩展可能不是您所期望的,甚至可能是空的-参数不会像您所希望的那样传递给git标记。要解决这一问题,整个函数都需要在函数内部,函数名是别名中的最后一项,因此您基本上可以得到:
_() { .... }; _ arg1 arg2
{…};\uarg1 arg2
-非常好的建议!对于后代,别名的git文档如下所示:
_() { .... }; _ arg1 arg2