Kilka sztuczek w Gicie (część 1. – aliasy)

Pokażę w tym poście kilka sztuczek, które stosuję aby uprzyjemnić i ułatwić sobie pracę z Gitem.

W tej, pierwszej części, skupię się na aliasach.

G jak Git

Polecenie git wpisujemy w konsolę bardzo często. Zamiast stukać w trzy klawisze, wystarczy jeden – polecam skrócenie tego polecenia do jednej litery. Do pliku .bashrc (lub jego odpowiednika w innych powłokach) dopisujemy:

alias g=git
source /usr/share/bash-completion/completions/git
__git_complete g __git_main

Pierwsza linijka skryptu jest oczywista. Pozostałe dwie sprawiają, że mimo wprowadzenia aliasu, działać będzie podpowiadanie w terminalu – po wpisaniu g branch i naciśnięciu na klawisz Tab, konsola podpowie nam dostępne gałęzie. Bez tych poleceń, zobaczylibyśmy po prostu pliki z aktualnego katalogu, czyli to co jest podpowiadane domyślnie.

Przy okazji – edycję tego pliku można bardzo uprościć!

Polecenia Gita

Główne polecenie skrócone, można więc pójść dalej i skrócić pozostałe. Otwieramy (lub tworzymy) w katalogu domowym plik .gitconfig i dodajemy do niego to co poniżej.

[alias]
     d = diff --color-words
     dc = diff --cached --color-words
     ap = add --patch
     co = checkout
     ci = commit
     cia = commit -a
     st = status
     br = branch
     re = reset
     reh = reset --hard
     gr = log --oneline --decorate --branches --graph -n 10

Polecam uwadze zwłaszcza dwa moje ulubione przełączniki:

  • --color-words przy poleceniu diff: jeśli w danej linii kodu zmieniliśmy tylko kilka słów czy znaków (BTW. szykują się fajne ulepszenia polecenia diff)
  • --patch przy add (działa też dla wielu innych poleceń, np. checkout i stash): pozwala na decydowania w trybie interaktywnym które zmiany dodać, a które nie.

Oraz całe polecenie gr, które powoduje wyświetlenie grafu pokazującego nazwy ostatnich 10 (-n 10) komitów repozytorium z każdej gałęzi (--branches, można użyć też --all, wtedy zobaczymy też wszystkie stashe).

Polecenie rin

Bardzo często sprawdzam stan repozytorium – co jest dodane do komita, a co nie, oraz nazwy kilku ostatnich komitów. Odpowiada to poleceniom git status oraz git log – czemu by więc nie zamknąć ich w jednym aliasie? Nazwałem go rin, co jest skrótem od repository information.

Dodatkowo, jeśli nie ma żadnych zmian od ostatniego komitu, napis working directory clean jest zielony. Dzięki temu szybciej dostrzegam tą informację. Ta mała zmiana jest zaskakująco użyteczna.

export GREEN=92
function colorStatus {
  git status | GREP_COLOR=$GREEN egrep 'working directory clean|$'
}
export -f colorStatus
function rin() {
  colorStatus
  echo
  git gr | cat
}
export -f rin

Polecam dostosować wspomniane techniki pod Wasze potrzeby. Kilka kolejnych sztuczek opiszę w drugiej części postu, która już niebawem.