여러 Git 명령과 위치 매개 변수를 모두 사용하는 별칭을 만들려고합니다. 각 페이지마다 Stackoverflow 페이지가 있으며 두 가지를 모두 수행하는 것이 고통스럽게 보이지만 문제가 있습니다.
예를 들어, 분기 foo로 전환하고 상태를 수행하고 싶습니다. 내에서 .gitconfig
, 나는 :
[alias]
chs = !sh -c 'git checkout $0 && git status'
작동하지 않습니다. 이와 같은 것이 효과가 있습니다.
chs = !sh -c 'git checkout $0'
echoes = !sh -c 'echo hi && echo bye'
모든 통찰력은 인정 될 것입니다.
답변
이것은 작동합니다 (zsh 및 bash로 테스트).
[alias] chs = !git checkout $1 && git status
답변
이것은 Windows 배치 / msysgit bash를 대상으로합니다. 다른 환경에서는 작동하지 않을 수 있습니다.
올리비에 베르디 어와 릴리 발라드가 말했듯이
[alias] chs = !git checkout $1 && git status
거의 작동하지만 인수를 추가로 추가 삽입합니다 …
git chs demo -> git checkout demo && git status demo
그러나 && :
별칭 끝에 추가 하면 가짜 인수가 위치 태그에 사용됩니다.
그래서
[alias] chs = !git checkout $1 && git status && :
올바른 출력을 제공합니다 …
git chs demo -> git checkout demo && git status
답변
쉘 기능을 정의 할 수 있습니다.
[alias] chs = "!f(){ git checkout \"$1\" && git status; };f"
답변
여러 줄로 된 복잡한 git 별칭을 만들 수있었습니다. 그들은 Windows에서 잘 작동하지만 다른 곳에서도 작동한다고 가정합니다.
safereset = "!f() { \
trap 'echo ERROR: Operation failed; return' ERR; \
echo Making sure there are no changes...; \
last_status=$(git status --porcelain);\
if [[ $last_status != \"\" ]]; then\
echo There are dirty files:;\
echo \"$last_status\";\
echo;\
echo -n \"Enter Y if you would like to DISCARD these changes or W to commit them as WIP: \";\
read dirty_operation;\
if [ \"$dirty_operation\" == \"Y\" ]; then \
echo Resetting...;\
git reset --hard;\
elif [ \"$dirty_operation\" == \"W\" ]; then\
echo Comitting WIP...;\
git commit -a --message='WIP' > /dev/null && echo WIP Comitted;\
else\
echo Operation cancelled;\
exit 1;\
fi;\
fi;\
}; \
f"
답변
[alias]
chs = !git branch && git status
답변
이거 한번 해봐:
[alias]
chs = "!sh -c 'git checkout \"$0\" && git status'"
다음과 같이 호출하십시오. git chs master
답변
\
각 줄의 끝에 추가하여 여러 줄 git 별칭을 가질 수 있습니다 .
[alias]
chs = "!git checkout $1 \
; git status \
"