Kilka sztuczek w Gicie (część 2.)

Oto drugi post dotyczący ułatwiania pracy z Gitem. Poprzedni znajdziecie tutaj. Dziś opiszę kilka kolejnych aliasów oraz parę innych ciekawostek.

„Prywatny .gitignore”

Kiedy pracujemy nad repozytorium w wiele osób, pojawia się następujące problemy:

  • wielu programistów ułatwia sobie pracę pisząc skrypty, które są skrojone pod ich potrzeby i nie ma potrzeby uwzględniania ich w repozytorium
  • są też tacy, którzy używają mało znanych IDE lub innych specyficznych narzędzi (np. aplikacji do puszczania testów) i wygodnie im jest trzymać pliki konfiguracyjne w katalogu projektu

Aby takich „osobisty” artefaktów nie dodawać do repozytorium (gdzie nikt inny ich nie użyje), można ich nazwy dopisać do pliku .gitignore. Dużym minusem tego rozwiązania jest to, że taki plik po jakimś czasie stałby się bardzo duży i bardzo zaśmiecony, a połowę jego zawartości stanowiłyby nazwy plików kilku programistów, którzy opuścili projekt dwa lata temu 😉

Rozwiązaniem na to jest coś na kształt prywatnego pliku .gitignore: plik .git/info/exclude. Znajduje się on dokładnie pod tą ścieżką i jego działanie jest takie jakiego możemy się spodziewać: Git ignoruje wszystkie zmiany, które wprowadzimy do tego pliku.

Uwaga! Użycie przełącznika -x w poleceniu git clean spowoduje usunięcie plików, które znajdują się na tej liście, ponieważ, jak mówi dokumentacja, oznacza on:

Don’t use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude

Cat jako pager

Polecenia takie jak git log czy git diff domyślnie wyświetlają swój wynik w aplikacji less, dzięki czemu możemy łatwo przewijać tekst, wyszukiwać w nim słów itp. Po wciśnięciu q, wracamy do terminalu tracąc całe wyjście z wyżej wspomnianych komend.

Jeśli wolicie zachowanie takie jak ma np. git status, tzn wypisanie wszystkiego do konsoli na stałe i wyświetlenie od razu znaku zachęty, w swoim pliku .gitconfig dodajcie następujący wpis:

[core]
  pager = cat

Kiedy chwilowo wolimy aby Git zachował się tak jak zachowuje się domyślnie, piszemy po prostu:

git diff | less

Alias watch_repo

I na koniec mój ulubiony alias. Pozwala on oglądać historię komitów w formie grafów w czasie rzeczywistym. Wygodny jest w połączeniu z Tmuxem – dzielimy ekran na dwie połowy, w jednej wpisujemy nasze komendy, w drugiej wyświetlamy wspomniany graf, i na żywo widzimy co się dzieje z repozytorium.

alias watch_repo='watch --color -t -d -n 1 git gr --color=always'

Komenda watch wykonuje po prostu daną instrukcję (tutaj git gr) co jedną sekundę (argument przełącznika -n). Przełącznik -d powoduje podświetlenie miejsca, w którym nastąpiła jakaś zmiana.

Polecenie git gr omówiłem w poprzednim poście, ale je przytoczę jeszcze raz:

gr = log --oneline --decorate --branches --graph -n 10

Oczywiście, są narzędzia takie jak Fork, które pokazują historie w jeszcze przyjemniejszy sposób (znane IDE też to umożliwiają). Wiem jednak że dużo programistów woli używać Gita z linii poleceń. Jeśli do nich należycie, mam nadzieję, że omówione tutaj sztuczki ułatwią Wam codzienną pracę.