git alias shell 命令错误

git alias shell 命令错误

我在 cygwin 上使用 bash 版本 4.1.2(1)-release (x86_64-redhat-linux-gnu) 和 git 1.7.1。我想为需要使用输入参数两次的命令创建一个别名。下列的这些说明, 我写

[alias]
branch-excise = !sh -c 'git branch -D $1; git push origin --delete $1' --

我收到此错误:

$> git branch-excise my-branch
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file

我最后尝试了 a-和 a ,但出现了相同的错误。--我怎样才能解决这个问题?

答案1

man git-config说:

语法相当灵活且宽松;空格大多被忽略。 # 和 ;字符从注释开始到行尾,空白行将被忽略。

所以:

branch-excise = !bash -c 'git branch -D $1; git push origin --delete $1'

相当于:

#!/usr/bin/env bash

bash -c 'git branch -D $1

运行上面的脚本打印:

/tmp/quote.sh: line 3: unexpected EOF while looking for matching `''
/tmp/quote.sh: line 4: syntax error: unexpected end of file

一种解决方案是将整个命令放入"

branch-excise = !"bash -c 'git branch -D $1; git push origin --delete $1'"

但是,它仍然不起作用,因为$1它是空的:

$ git branch-excise master
fatal: branch name required
fatal: --delete doesn't make sense without any refs

为了使其工作,您需要创建一个虚拟函数.gitconfig并像这样调用它:

branch-excise = ! "ddd () { git branch -D $1; git push origin --delete $1; }; ddd"

用法:

$ git branch-excise  master
error: Cannot delete the branch 'master' which you are currently on.
(...)

相关内容