저는 cygwin에서 bash 버전 4.1.2(1)-릴리스(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.
(...)