Próbuję utworzyć alias z parametrem dla mojego prostego dodawania / zatwierdzania / wypychania gita.
Widziałem, że Function można użyć jako aliasu, więc próbuję, ale nie udało mi się.
zanim miałem:
alias gitall="git add . ; git commit -m 'update' ; git push"
Ale chcę mieć możliwość modyfikowania moich zatwierdzeń:
function gitall() {
"git add ."
if [$1 != ""]
"git commit -m $1"
else
"git commit -m 'update'"
fi
"git push"
}
(wiem, że to okropna praktyka gita)
csh
tak, ale w ogóle nie ma funkcji. (Nie wiem, czy nie ma funkcji, ponieważ aliasy mogą przyjmować parametry, czy też aliasy przyjmują parametry, ponieważ nie ma funkcji, czy co.)gitall "my commit message"
? czy możesz to nazwaćgitall('my commit message')
gitall "my commit message"
.getall() {
bez powyższegofunction
- oczywiście, jest to legalne w zsh, ale ta jedyna zmiana sprawi, że będzie to kompatybilne ze wszystkimi powłokami zgodnymi z POSIX.git commit -m "${1:-update}"
(rozwinięcia parametrów z podanym domyślnym), to w ogóle nie potrzebujesz tejif
instrukcji.Jeśli naprawdę potrzebujesz z jakiegoś powodu aliasu z parametrem, możesz go zhakować, osadzając funkcję w swoim aliasie i natychmiast ją wykonując:
alias example='f() { echo Your arg was $1. };f'
Widzę, że to podejście jest często używane w aliasach .gitconfig.
źródło
example
.alias example='(){ echo Your arg was $1. ;}'
Użyłem tej funkcji w pliku .zshrc:
function gitall() { git add . if [ "$1" != "" ] then git commit -m "$1" else git commit -m update # default commit message is `update` fi # closing statement of if-else block git push origin HEAD }
Tutaj
git push origin HEAD
jest odpowiedzialny za zdalne przekazanie twojej obecnej gałęzi.Z wiersza poleceń uruchom to polecenie:
gitall "commit message goes here"
Jeśli po prostu uruchomimy
gitall
bez komunikatu o zatwierdzeniu, komunikat o zatwierdzeniu będzie taki,update
jak wskazała funkcja.źródło
"git add ."
a pozostałe polecenia między"
to tylko ciągi znaków dla bash, usuń"
s.Możesz
[ -n "$1" ]
zamiast tego użyć w swoim ciele if.źródło
Wypróbowałem zaakceptowaną odpowiedź (Kevina), ale otrzymałem następujący błąd
defining function based on alias `gitall' parse error near `()'
W związku z tym zmieniłem składnię na tę, opartą na problemie z git i zadziałało.
function gitall { git add . if [ "$1" != "" ] then git commit -m "$1" else git commit -m update fi git push }
źródło