답변:
질문에 대한 직접적인 대답은 아니지만 (별칭은 한 단어로만 가능하므로) git-config
대신 사용해야합니다 .
git config --global alias.civ commit -v
이것은 git 별명을 생성하여 git civ
실행됩니다 git commit -v
. 불행히도 AFAIK 는 기존 git 명령을 aliases로 재정의하는 방법이 없습니다 . 그러나 항상 적절한 별명을 선택하여 대안으로 사용할 수 있습니다.
git
쉘 스크립트의 조금으로, 별칭 명령을. (.! 내가 BTW, 비판 등이 의견을 게시하고 있지 않다 대답은 당신 후 거의 일년을 게시 한 난 그냥 사람들은 도움이 될 수 있다는 희망을 게시하도록하겠습니다.)
공백을 포함하는 명령에 대해 이야기하고 있지만 여기에는 명령이 git
있고 공간이 없습니다.
git commit 명령 을 호출하려면 명령을 작성해야합니다.
git\ commit ...
'git commit' ...
"git commit" ...
일반적으로 명령에는 쉘에서 호출하는 것이 번거롭기 때문에 이름에 공백이 없으므로 시스템에서 그러한 명령을 찾을 수 없다고 생각합니다.
csh, tcsh 또는 zsh를 사용하면 위의 것들 중 하나를 별칭으로 지정할 수 있지만 bash 또는 ksh는 사용할 수 없습니다 (pdksh는 허용하지만 사용할 수는 없습니다). zsh에서 :
alias "'git commit'=git commit -v"
'git commit' ...
만들 것 git command
(으로 호출 할 때 명령을 'git command'
단일 따옴표 () 만 해당)의 별칭을 git
와 명령 commit
및 -v
인수. 당신이 찾고있는 것이 아니라고 생각합니다.
alias
별명 명령 만 할 수 있기 때문에 여기에서 별명을 지정할 수있는 것은 명령 뿐이며 git
인수 목록에서 "commit"뒤에 "-v"를 삽입하는 것으로 별명을 지정해야합니다. @ jw013의 솔루션을 사용하는 것이 가장 좋지만 어떤 이유로 인해 별칭을 사용하는 대신 할 수 없거나 사용할 수없는 경우 함수를 사용하여 작업을 수행 할 수 있습니다.
git() {
if [ "$1" = commit ]; then
shift
set -- commit -v "$@"
fi
command git "$@"
}
Bash에서는 공백이있는 명령의 별명을 작성할 수 없습니다.
그러나 .bashrc에서 다음 함수를 해결 방법으로 사용합니다.
sudo() { if [[ $@ == "pacman -Syu" ]]; then command pacup.sh; else command sudo "$@"; fi; }
작동 방식 : 호출하려는 명령으로 시작합니다. 제 경우에는입니다 sudo
.
그런 다음 어떤 매개 변수를 사용할지 언급합니다. 이 경우, pacman -Syu
.
트리거 된 경우 어떤 명령을 실행해야합니까? 위의 진술에서 그것은입니다 pacup.sh
.
그렇지 않으면 어떤 명령을 실행해야합니까 sudo $@
. $@
당신이 짐작 하듯이 명령이 취하는 매개 변수 목록입니다.
따라서 특정 사례에 대한 명령을 내리면 다음과 같습니다.
git() { if [[ $1 == "commit" ]]; then command git commit -v; else command git "$@"; fi; }
그러나이 솔루션은 공백이있는 명령의 별명을 지정하려는 경우에보다 일반적인 경우입니다.
특정 경우에는 jw013의 솔루션으로 git 명령의 별칭을 지정하는 것이 좋습니다.git-config
if [[ $1 == 'commit' ]]...
않습니까? $ @의 확장은 실제로 유지하려는 커밋에 대한 더 많은 인수를 가질 수 있습니다.
로부터 bash는 별칭 맨 페이지
인용되지 않은 경우 각 간단한 명령의 첫 단어는 별칭이 있는지 확인합니다. 그렇다면 해당 단어가 별칭의 텍스트로 바뀝니다. 별명과 대체 텍스트는 별명에`= '를 포함 할 수없는 것을 제외하고 쉘 메타 문자를 포함한 유효한 쉘 입력을 포함 할 수 있습니다.
대체 텍스트의 첫 번째 단어는 별칭을 테스트하지만 확장되는 별칭과 동일한 단어는 두 번째로 확장되지 않습니다. 이는 예를 들어 ls를 "ls -F"로 별칭을 지정할 수 있으며 Bash는 대체 텍스트를 재귀 적으로 확장하려고 시도하지 않습니다.
따라서 첫 번째 단어 만 확인되므로 여러 단어로 된 별칭을 가질 수 없습니다. 에서 이 슈퍼 사용자 질문 , 함수를 사용하여 해결 방법이 제공됩니다
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
에 적용 할 수 있습니다 git
.
\ls
대한 별칭을 무시합니다 ls
.
[_!%,@]
확장해야합니다. zsh의 '\ ls'별칭 또는 ksh / dash / bash / zsh의 별칭과 같은 확장은 금지하지 않습니다. a-b
그렇지 않으면 단일 POSIX 셸이 존재하지 않습니다. 쉘이 아닌 이식 가능한 스크립트 는 그러한 별칭을 사용해서는 안된다고 말합니다 .
'git commit'
POSIX 쉘에서 명령 위치에 쓰면 내장 유틸리티, 함수 또는 외부 명령을 호출해야합니다.
올바른 해결책은 jw013 제안과 같은 별칭을 사용하는 것이지만 공백이있는 별칭을 만들려면 별칭을 NEST 할 수 있습니다.
예를 들어 로컬 및 원격으로 분기를 삭제하는 별칭이 있지만 사용자가 항상 분기를 지정하기를 원합니다.
remrem = "!sh -c 'if [ $# -ne 1 ]; then git specBranch; else git push origin :$1 && git branch -d $1; fi' -"
#echoing aliases
specBranch = "!sh -c 'echo Specify branch please!'"
git config
하지git-config