git 별칭 쉘 명령 오류

git 별칭 쉘 명령 오류

저는 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.
(...)

관련 정보