git [action] 명령에 대한 별칭(공백 포함)을 만드는 방법은 무엇입니까?

git [action] 명령에 대한 별칭(공백 포함)을 만드는 방법은 무엇입니까?

내 별칭의 대부분은 다음과 같은 형식입니다.alias p='pwd'

git commit별칭을 사용하여 가능하도록 하고 싶습니다.git commit -v

그러나 공백이 포함된 별칭을 만들려고 하면 오류가 발생합니다.

$ alias 'git commit'='git commit -v'
-bash: alias: `git commit': invalid alias name

답변1

귀하의 질문에 대한 직접적인 대답은 아니지만(별칭은 한 단어만 가능하므로) 다음을 사용해야 합니다 git-config.

git config --global alias.civ commit -v

불행히도 내가 아는 한 이것은 git civ실행 하기 위해 git 별칭을 생성합니다 .git commit -v별칭으로 기존 git 명령을 덮어쓸 수 없습니다.. 그러나 언제든지 적절한 별칭을 대안으로 선택할 수 있습니다.

답변2

공백이 포함된 명령에 대해 이야기하고 계시는데, 여기 명령은 git공백이 없습니다.

전화 번호자식 커밋명령을 작성해야 합니다.

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'나는 이것이 당신이 찾고 있는 것이 아닌 것 같아요.gitcommit-v

alias앨리어싱만 가능하기 때문에주문하다, 여기에서 별칭을 지정할 수 있는 것은 git명령이며 매개변수 목록에서 "commit" 뒤에 "-v"를 삽입하는 항목에 별칭을 지정해야 합니다. @jw013의 솔루션을 사용하는 것이 더 좋지만 어떤 이유로든 할 수 없거나 할 수 없는 경우 별칭을 사용하는 대신 함수를 사용하여 작업을 수행할 수 있습니다.

git() {
  if [ "$1" = commit ]; then
    shift
    set -- commit -v "$@"
  fi
  command git "$@"
}

답변3

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

답변4

올바른 해결책은 jw013에서 제안한 대로 별칭을 사용하는 것이지만 공백이 포함된 별칭을 만들려면 별칭을 중첩할 수 있습니다.

예를 들어, 로컬 및 원격으로 분기를 삭제할 수 있는 별칭이 있지만 사용자가 항상 분기를 지정하도록 하려고 합니다.

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!'" 

관련 정보