我在 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.
(...)