Git 별칭 - 여러 명령 및 매개 변수
여러 Git 명령과 위치 매개 변수를 모두 사용하는 별칭을 만들려고 합니다.각각의 스택 오버플로 페이지가 있고, 두 가지 모두를 수행하는 것은 고통스러울 정도로 명백해 보이지만, 저는 어려움을 겪고 있습니다.
예를 들어 지점 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
이는 윈도우즈 배치/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 = !git checkout && git status
ac = !git add . && git commit -m
뭐가!?
별칭 확장 앞에 느낌표가 있으면 셸 명령으로 처리됩니다.느낌표는 git 구성 별칭을 의미합니까?
.gitconfig 파일에서 별칭을 호출하려면 다음과 같이 하십시오.
git chs
git ac "write_your_commit_message"
별칭은 더 빨리 할 수 있는 추가 및 커밋에 더 유용합니다.
사용해 보십시오.
[alias]
chs = "!sh -c 'git checkout \"$0\" && git status'"
: 다과같이부릅다니음다.git chs master
추가하여 여러 줄의 Git 별칭을 가질 수 있습니다.\
각 행의 끝에
[alias]
chs = "!git checkout $1 \
; git status \
"
여기서 문제는 위치 매개 변수가 셸 명령으로 두 번 전송되는 것처럼 보인다는 것입니다(git 1.9.2 기준).내 뜻을 보려면 다음을 시도하십시오.
[alias]
test = !git echo $*
그럼, 하시오git test this is my testing string
다음 출력을 확인해야 합니다(마지막 두 줄은 명확하게 하기 위해 여기서 편집).
03:41:24 (release) ~/Projects/iOS$ git test this is my testing string
this is my testing string this is my testing string
^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
#1 #2
이 문제를 해결하는 한 가지 방법은
[alias]
chs = !git checkout $1 && git status && git echo x >/dev/null
마지막 에코 명령에 적용될 때 추가 위치 매개 변수가 사용되며 결과에는 영향을 주지 않습니다.
다른 별칭이 수행하는 작업을 시도하려는 사용자를 위한 예제입니다.
에 저장( GIT 구의별 예이입를력합다니에션섹칭의성일파):~/.gitconfig
) :
[alias]
a0 = "!echo $*"
a1 = "!echo $* #"
a2 = "!f () { echo \"$*\"; }; f "
a3 = "!f () { echo \"$*\"; }; f #"
a4 = "!f () { echo \"$*\"; }; f \"$*\" #"
a5 = "!f () { echo \"$*\"; }; f \"$@\" #"
a6 = "!f () { echo \"$*\"; }; f \"$1\" #"
다음 명령을 실행합니다.
cat ~/.gitconfig | grep --extended-regexp -- '(a[0-9])|(alias)' ; \
echo "" ; \
export CMD ; \
for I in {0..6} ; \
do \
CMD="a""${I}" ; \
echo -n "Executing alias.${CMD} = " ; \
git config --global alias."${CMD}" ; \
git $CMD 'hoi daar' en nu ; \
git $CMD hoi daar en nu ; \
echo "" ; \
done ; \
unset CMD ;
출력으로 제공해야 합니다.
[alias]
a0 = "!echo $*"
a1 = "!echo $* #"
a2 = "!f () { echo \"$*\"; }; f "
a3 = "!f () { echo \"$*\"; }; f #"
a4 = "!f () { echo \"$*\"; }; f \"$*\" #"
a5 = "!f () { echo \"$*\"; }; f \"$@\" #"
a6 = "!f () { echo \"$*\"; }; f \"$1\" #"
Executing alias.a0 = !echo $*
hoi daar en nu hoi daar en nu
hoi daar en nu hoi daar en nu
Executing alias.a1 = !echo $* #
hoi daar en nu
hoi daar en nu
Executing alias.a2 = !f () { echo "$*"; }; f
hoi daar en nu
hoi daar en nu
Executing alias.a3 = !f () { echo "$*"; }; f #
Executing alias.a4 = !f () { echo "$*"; }; f "$*" #
hoi daar en nu
hoi daar en nu
Executing alias.a5 = !f () { echo "$*"; }; f "$@" #
hoi daar en nu
hoi daar en nu
Executing alias.a6 = !f () { echo "$*"; }; f "$1" #
hoi daar
hoi
이것은 오래된 게시물이지만, 아무도 제가 생각하는 가장 간단한 해결책을 제공하지 않았습니다.이 기능은 *nix 기반 CLI에서 사용할 수 있으며, 마일리지는 달라질 수 있습니다.
[alias]
chs = "!git checkout $1; git status"
여러 Git 명령을 실행하는 데 필요한 것은 간단한 세미콜론(;)뿐입니다.
릴리 발라드가 셸 함수와 함께 좋은 답을 가지고 있는 한, 모든 별칭 인수를 파이프로 연결할 때 더 좋아 보입니다.
[alias] chs = "!f(){ git checkout \"${@:1}\" && git status; };f"
언급URL : https://stackoverflow.com/questions/7534184/git-alias-multiple-commands-and-parameters
'programing' 카테고리의 다른 글
Firestore 쿼리 하위 컬렉션 (0) | 2023.07.04 |
---|---|
데이터 프레임을 s3 Python에 직접 csv에 저장 (0) | 2023.07.04 |
SQL 서버의 포트 번호 식별 방법 (0) | 2023.07.04 |
Firebase 인증된 사용자만 허용하도록 Firebase Cloud Function HTTP 끝점을 보호하는 방법은 무엇입니까? (0) | 2023.07.04 |
C/C++에서 TCP 소켓을 읽는 올바른 방법은 무엇입니까? (0) | 2023.07.04 |