Bash
git alias shell 命令出錯
我在帶有 git 1.7.1 的 cygwin 上使用 bash 版本 4.1.2(1)-release (x86_64-redhat-linux-gnu)。我想為需要使用輸入參數兩次的命令創建一個別名。按照這些說明,我寫了
[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--
,但我得到了同樣的錯誤。我怎樣才能解決這個問題?
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. (...)