zsh 플러그인의 git 별칭을 사용하고 있습니다.https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git
따라서 다음과 같은 git 별칭이 있습니다.
gst # git status
ga # git add
gc "commit" # git commit -v "commit"
...
...또한 git bare repo를 사용하여 모든 도트 파일을 백업합니다.https://github.com/Anthonyive/dotfiles/blob/0706bc81daa3aeb7899b506cd89d4ab78fc7b176/USAGE.md
특히 git bare repo 기술은 git 명령의 별칭을 다음과 같이 지정합니다 dotfiles
.
alias dotfiles='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
alias d='dotfiles'
그렇다면 모든 git alias 명령을 어떻게 매핑합니까 d
? 좋다:
dst # similar to gst, but uses the dotfiles alias
da # similar to ga
dc "commit" # similar to gc "commit"
...
하나씩 매핑하는 것은 지루한 것 같습니다 ...
답변1
연관 배열aliases
모든 별칭 정의를 포함합니다.
for name in "${(@k)aliases}"; do
if [[ $name == g* && $aliases[$name] == 'git '* ]]; then
alias d${name#g}="dotfiles ${aliases[$name]#git }"
fi
done
또는 d
별칭을 다음 git 명령이 필요한 함수로 변경할 수 있지만 먼저 셸 별칭을 확장하고 선행 git
.
alias d='d ' # expand aliases after d
function d {
if [[ $1 == "git" ]]; then shift; fi
dotfiles "$@"
}
그런 다음 d gst
실행됩니다 dotfiles status
. d gc myfile
실행됩니다 dotfiles commit myfile
. d ls-tree
실행됩니다 dotfiles ls-tree
. 완료는 가능하지만 쉽지는 않습니다.
답변2
git
모든 호출을 로 바꾸려면 git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME
다음 함수를 사용할 수 있습니다.
git() {
command git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME "$@"
}
하지만,이 경우에는 실제로 그렇게 할 필요가 없습니다. git
이러한 옵션 플래그를 다음으로 전달하는 대신:
export GIT_DIR=$HOME/.dotfiles/
export GIT_WORK_TREE=$HOME
바라보다https://www.git-scm.com/docs/git#Documentation/git.txt---git-dirltpathgt
그런데, 많은 별칭을 유지하고 기억하려고 하는 대신, 다음을 사용할 수 있습니다.zsh-autocomplete
기록 완료 모드. (면책조항: 저는 이 플러그인의 관리자입니다.)