Git - submoduły i aliasy

3 minutes to read

Post oparty na prawdziwych wydarzeniach i traumach

Submoduły

Zrobili to! Mimo że protestowałem. Do projektu przy którym pracowałem dodali submoduły.

Dodatkowe komendy

Tak przekonany przestałem marudzić i przejrzałem Git-Tools-Submodules, git-submodule oraz git-clone. Okazało się, że praca z submodułami nie jest taka straszna i sprowadza się głównie do dwóch komend:

git clone --recurse-submodules
git submodule update --init --recursive

Pierwsza komenda ściąga repozytorium ze wszystkimi submodułami. Druga - aktualizuje submoduły po przełączeniu się na inny commit, gałąź lub po aktualizacji gałęzi.

Niestety komendy te wydłużają i tak długie już komendy gita.

Aliasy Basha

Szczęśliwie umiem rozwiązywać problem długich komend, bo znam aliasy basha.

Pierwsza wersja moich aliasów wyglądała następująco:

alias g='git'
alias gcl='git clone'
alias gclr='gcl --recurse-submodules'
alias gupdate='git submodule update --init --recursive'
alias gpr='git pull --rebase'
alias gpru='gpr && gupdate'
alias master='git checkout master && gupdate'
alias develop='git checkout develop && gupdate'

Aliasy Gita

Byłem bardzo zadowolony ze swoich aliasów, więc postanowiłem się nimi pochwalić koledze:

Po przeczytaniu Git-Basics-Git-Aliases i git-config mój zbiór aliasów zamienił się w zestaw komend gita do wykonania:

git config --global alias.cl 'clone'
git config --global alias.clr 'cl --recurse-submodules'
git config --global alias.update 'submodule update --init --recursive'
git config --global alias.pr 'pull --rebase'
git config --global alias.pru '!git pr && git update'
git config --global alias.master '!git checkout master && git update'
git config --global alias.develop '!git checkout develop && git update'
git config --global alias.tig '!tig'

Widać tutaj, że podkomenda alias ma dwie składnie:

git config --global alias.nowa_komenda_gita 'stara_komenda_gita_z_parametrami'
git config --global alias.nowa_komenda_gita '!dowolna_komenda_basha'

I od teraz:

Komendy te zapisałem w pliku git_config.sh i można je wykonać poleceniem:

curl -s https://raw.githubusercontent.com/writeonly/cli/master/git_config.sh | bash
Share on:
Follow