Jak w pięć minut zacząć używać Gita w wierszu poleceń
Codziennie piszesz kod, prawda? Dlaczego nie spróbować wprowadzania poleceń Gita w postaci kodu, zamiast wyklikwać go w GUI? OK, potrzebujesz trochę czasu, żeby się z tym oswoić, ale kiedy już to zrobisz, zaufaj mi, że będziesz bardziej efektywny niż kiedykolwiek. Pokażę ci kilka podstawowych poleceń. I nie, nie jest to kolejna dokumentacja.
Wiktor Malinowski. Senior Software Engineer w Codete. Full-stack developer z ponad siedmioletnim doświadczeniem komercyjnym. Pierwsze kroki w programowaniu stawiał w BASIC’u na Commodore 64 oraz Amidze. Z technologiami webowymi związany od 2008 roku, kiedy kod musiał działać także na Internet Explorer 6. Programista-pasjonat, fan nowoczesnych technologii.
Spis treści
Status
Polecenie git status pokazuje aktualną pozycję (np. na jakiej gałęzi jesteś) oraz jakie zaszły zmiany. Jak już oswoisz się komendą, możesz użyć git status –short , aby wyświetlić status w skróconej formie. A oto różnica:
Manipulowanie zmianami
Oto lista niektórych poleceń, które pozwalają na manipulację zmianami:
git add file
– dodaje plikfile
do poczekalni (zmiany gotowe do zatwierdzenia),git restore file
– odrzuca zmiany wfile
,git restore --staged file
– usuwafile
z poczekalni, ale pozostawia zmiany.
file może być zastąpiony dowolną ścieżką do pliku lub katalogu.
Sprawdzanie różnic
git diff
– wyświetla zmiany w twoim drzewie roboczym,git diff --staged
– wyświetla zmiany z poczekalni,git diff dev
– wyświetla zmiany pomiędzy drzewem roboczym a gałęzią dev. Zamiast nazwy gałęzi możesz użyć identyfikator zmiany (commit hash) lub tag,git diff master..dev
– wyświetla zmiany między gałęziamimaster
orazdev
.
Możesz także podać ścieżkę do pliku lub katalogu jako dodatkowy argument, aby zobaczyć różnice tylko dla określonych plików.
Jeśli chcesz tylko sprawdzić nazwy plików, które były zmienione, użyj przełącznika --name-status
. Jeśli chcesz dodatkowo wiedzieć, które pliki zostały zmodyfikowane, dodane lub usunięte, użyj przełącznika--name-status
.
Zatwierdzanie
Po dodaniu zmian do poczekalni użyj polecenia git commit -m 'Commit massage'
, aby zatwierdzić zmiany. Jeśli nie podasz przełącznika -m
, otworzy się domyślny dla Gita edytor tekstu. Nie bądź zaskoczony, jeśli to będzie VIM. Zapisz plik i zamknij edytor, aby zatwierdzić zmianę.
Możesz zmienić domyślny edytor w konfiguracji, używając tej komendy:
git config --global core.editor your-editor-executable-path
Używanie wyrażeń regularnych z poleceniami add/restore/switch/ diff
Dodawanie do poczekalni tylko plików z rozszerzeniem ts, które znajdują się w katalogu src
:
git add src/**/*.ts
Odrzucanie zmian z katalogu test
:
git restore test/
Odrzucanie wszystkich zmian z poczekalni zaczynając od bieżącego katalogu:
git restore --staged .
Dla celów testowych możesz próbnie uruchomić polecenie, używając przełącznika -n
.
Interaktywne wybieranie zmian
Użyj przełącznika -p
(lub --patch
), aby interaktywnie wybierać kawałki kodu, które chcesz dodać przy użyciu komendy add (bądź -reset
lub restore
). Decydujesz, który kawałek (bądź cały plik) dodać. Z przełącznikiem -p
wynik zmienia się w:
Przełączanie
Polecenie switch
służy do przełączania między gałęziami:
git switch branch-name
– przełącza do gałęzibranch-name
,git switch -b abc
– tworzy gałąźabc
i przełącza się na nią,git switch
– przełącza do poprzedniej gałęzi,git checkout [args]
– działa jakoswitch
, ale może również przenieść HEAD do dowolnej wersji / tagu *.
*switch
i restore
to całkiem nowe polecenia, mające na celu zapewnienie lepszego interfejsu dla dobrze znanego, wielozadaniowego polecenia checkout
.
Gałęzie
git branch
– zwraca listę lokalnych gałęzi.
Użyj-r
, aby wyświetlić listę tylko zdalnych gałęzi lub-a
, aby wyświetlić je wszystkie,git branch abc
– tworzy gałąźabc
,git branch -d abc
– usuwa gałąźabc
jeśli już jest scalona. Jeśli nie, użyj -D, aby wymusić usunięcie.
Historia zmian
Użyj git log
, żeby zobaczyć historię zmian.
Jest tu dużo opcji, takich jak:
- Wyświetlanie dodatkowo wszystkich zmian:
git log -p
- Wyświetlanie n ostatnich zmian zaczynając od bieżącej pozycji:
git log -2 # display two recent commits
- Wyświetlanie zmian dla danej gałęzi:
git log branch-name
- Wyświetlanie zmian tylko dla określonego pliku/plików (można użyć wyrażeń regularnych):
git log *.js # or git log branch-name:*.js
- Wyświetlanie zmiany tylko danego autora (można użyć częściowej nazwy):
git log --author wiktor
- Wyświetlanie według daty:
git log --since 2019-10-01
- Wyświetlanie według daty, używając dynamicznych zakresów (dni, tygodnie, miesiące, lata):
git log --since 2months --until 1week
Ustawienia aliasów
Nie musisz wpisywać całych poleceń Gita za każdym razem. Można ustawić alternatywne nazwy komend. Po prostu wklej to do swojego pliku .gitconfig
.
[alias] br = branch st = status rt = restore sw = switch ci = commit d = diff dc = diff --cached l = log last = l -1 # możesz użyć istniejącego aliasu do stworzenia kolejnego
Teraz możesz po prostu użyć git st
zamiast git status
, etc.
Możliwe jest również dodanie aliasu z wiersza poleceń. Na przykład ustawienie l
dla polecenia log : git config --global alias l log
.
Aliasy w akcji:
Scalanie gałęzi
git merge abc –
scala gałąźabc
do tej, w której się aktualnie znajdujesz.
Czasem nie chcesz załączać historii zmian podczas scalania. Istnieje opcja, aby dostać tylko zmiany z danej gałęzi.
git merge --squash your-branch
Powoduje to wprowadzenie zmian do poczekalni, dzięki czemu możesz je nadal zmodyfikować przed scaleniem.
Ustawienia kluczy SSH
Aby uzyskać dostęp do prywatnego repozytorium, musisz mieć uprawnienia.
Możesz użyć uwierzytelnienia przez HTTPS lub skonfigurować klucz SSH. Klucze SSH mają wiele zalet w stosunku do haseł, takich jak:
- Większe bezpieczeństwo, gdyż jest niezwykle mało prawdopodobne, aby ktoś złamał lub odgadł klucz,
- “Hasło” bez wpisywania (o ile klucz nie został stworzony wraz z hasłem).
Aby utworzyć parę kluczy SSH, użyj polecenia ssh-keygen:
ssh-keygen -t rsa -b 4096
Komenda tworzy klucz RSA o rozmiarze klucza 4096 bitów dla większego bezpieczeństwa. Domyślnie klucze zapisują się do katalogu ~/.ssh. Pamiętaj, że prywatny klucz id_rsa jest tajny i pod żadnym pozorem nie może być udostępniany.
Następnie wyślij klucz publiczny ~/.ssh/id_rsa.pub na swoje konto GitHub.
Jest do tego oficjalny tutorial:
https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account?source=post_page—–36a6e0007e9f———————-
Od teraz masz dostęp do repozytorium bez podawania hasła.
Proces powinien wyglądać dość podobnie dla innych aplikacji, takich jak GitLab czy Bitbucket.
Ciągle tu jesteś?
Koniecznie musisz wypróbować narzędzie do obsługi Gita w trybie tekstowym – tig. Ułatwia przeglądanie zmian w repozytorium. Spójrz na zrzut ekranu:
To wszystko!
To był prosty przykład użycia podstawowych poleceń Git. Każde z nich jest tak obszerne, że musiałbyś napisać artykuł (lub ich serię), o każdym z nich oddzielnie. Sama instrukcja polecenia log
składa się z ponad 2300 linijek.
git log --help | wc -l 2334
Dzięki za lekturę!
Artykuł został pierwotnie opublikowany na medium.com/better-programming. Autorką tłumaczenia jest Kinga Bielicka. Zdjęcie główne artykułu pochodzi z unsplash.com.