- Published on
Kolejne narzędzie, bez którego nie można się obejść – Git
- Authors
- Name
- juro.lowQ
- @juro.lowQ
Kolejne narzędzie, bez którego nie można się obejść – Git
Każdy programista, niezależnie od poziomu zaawansowania, w pewnym momencie musi zarządzać kodem w sposób, który zapobiega utracie pracy, umożliwia powrót do poprzednich wersji i ułatwia współpracę z innymi. Tutaj z pomocą przychodzi Git – rozproszony system kontroli wersji.
Czym jest Git i dlaczego jest tak ważny?
Git to nie tylko narzędzie, to filozofia pracy z kodem. Wyobraź sobie, że piszesz projekt i nagle zdajesz sobie sprawę, że ostatnie zmiany zepsuły coś, co wcześniej działało. Bez systemu kontroli wersji powrót do działającego stanu może być koszmarem. Git rozwiązuje ten problem, śledząc każdą zmianę wprowadzoną w plikach projektu.
Dlaczego jest to tak ważne?
- Bezpieczeństwo pracy: Nigdy więcej nie stracisz swojej pracy. Git pozwala tworzyć „migawki” projektu w dowolnym momencie, dzięki czemu zawsze możesz wrócić do wcześniejszej, stabilnej wersji.
- Współpraca: Pracujesz w zespole? Git umożliwia jednoczesną pracę wielu osób nad tym samym projektem, bez nadpisywania zmian. Pomaga też w łączeniu (merge) zmian od różnych deweloperów, wskazując ewentualne konflikty.
- Nieliniowa historia zmian: Możliwość tworzenia gałęzi (branches) to jedna z najpotężniejszych cech Gita. Dzięki nim możesz eksperymentować z nowymi funkcjami, poprawkami błędów czy optymalizacjami, nie wpływając na główną, stabilną wersję projektu. Gdy zmiany są gotowe, łatwo włączysz je do głównej gałęzi. Ta nieliniowa historia zapewnia swobodę i elastyczność w rozwoju projektu.
- Audyt zmian: Zawsze wiesz, kto, kiedy i jakie zmiany wprowadził. To nieocenione przy debugowaniu i śledzeniu ewolucji projektu.
Nie tylko Git – czyli co z moim ulubionym Neovimem?
Ten wpis skupia się na podstawach Gita, ale nie mogę pominąć tego, jak narzędzia kontroli wersji współgrają z moim ulubionym edytorem – Neovimem. W kolejnych postach omówimy narzędzia Gita dedykowane dla Neovima, ale dziś zatrzymam się przy pluginie, który znacząco ułatwia życie, zwłaszcza w zarządzaniu zmianami, nawet jeśli nie są one bezpośrednio związane z Gitem.
Mowa o Undo Tree. Git oferuje potężne możliwości cofania zmian na poziomie całego repozytorium, ale Undo Tree dostarcza graficzną, interaktywną wizualizację historii zmian w pojedynczym pliku.
Instalacja Undo Tree z Lazy
Aby zainstalować Undo Tree w Neovimie przy użyciu menedżera wtyczek Lazy, dodaj poniższy wpis do konfiguracji:
{
"mbbill/undotree",
keys = {
{ "<leader>uu", "<cmd>UndotreeToggle<CR>", desc = "Toggle UndoTree" }
}
}
Ten kod instaluje plugin i ustawia skrót <leader>uu
, który włącza lub wyłącza okno Undo Tree.
Główne cechy Undo Tree
Drzewo historii zmian
- Każda zmiana w pliku tworzy nową „gałąź” w drzewie. W standardowym Vimie, gdy cofniesz zmianę i wprowadzisz nową, wcześniejsza gałąź jest tracona. Undo Tree zachowuje wszystkie gałęzie, umożliwiając przełączanie się między różnymi stanami pliku, nawet tymi „alternatywnymi”.
- Możesz eksplorować różne wersje pliku, które istniały w przeszłości, bez obawy o utratę historii.
Wizualizacja drzewa
- Plugin otwiera okno podglądu (zazwyczaj po lewej stronie), które graficznie przedstawia drzewo zmian.
- Wizualizacja jasno pokazuje, gdzie jesteś w drzewie, które zmiany są „rodzicami” (wcześniejsze stany), a które „dziećmi” (kolejne wersje).
Trwałość historii (Persistent Undo)
- Undo Tree wykorzystuje funkcję Vima „persistent undo” (jeśli włączona), zapisując historię zmian na dysku. Dzięki temu po ponownym otwarciu pliku cała historia edycji jest dostępna.
Łatwa nawigacja
- Dedykowane mapowania klawiszy (domyślne lub konfigurowalne) umożliwiają:
- Przechodzenie do starszych lub nowszych stanów pliku.
- Eksplorację „rodziców” (poprzednich stanów) i „dzieci” (kolejnych wersji).
- Szybkie przełączanie się między gałęziami w oknie drzewa.
Podgląd różnic (Diff Preview)
- Po wybraniu węzła w drzewie Undo Tree może wyświetlić różnice między aktualnym stanem pliku a wybranym stanem. To ułatwia zrozumienie, co dokładnie zmieniło się w danym punkcie historii.
Undo Tree to idealne uzupełnienie Gita, szczególnie gdy chcesz szybko zarządzać lokalnymi zmianami w pojedynczym plik.To jak „historia cofania” na sterydach. Możesz przeglądać i wracać do dowolnego stanu pliku, nawet po ponownym otwarciu Neovima. To niezwykle przydatne przy eksperymentowaniu z kodem, testowaniu pomysłów czy szybkim powrocie do poprzednich wersji bez angażowania całego repozytorium Gita. Undo Tree świetnie uzupełnia pracę z Gitem. Wracajac do głównego tematu.
Kolejne narzędzie, bez którego nie można się obejść – Git
1. Instalacja Gita
Windows
- Pobierz oficjalny instalator z git-scm.com. Można tez zrobic to za pomoca narzedzia winget w pwsh. winget install --id Git.Git -e --source winget
- Uruchom instalator, zachowując domyślne opcje (w tym Git Bash).
Linux
Dla linuxa pobierz uwywajac twojego menadżera pakietów w zależności od distro:
# Debian/Ubuntu
sudo apt install git
# Fedora
sudo dnf install git
# Arch
sudo pacman -S git
# Sprawdzamy czy działa
git --version
Jeżeli mamy problem z uruchomieniem gita dodajemy do zminnej środowiskowej lokalizacje naszego folderu z gitem.
2. Podstawowa konfiguracja
Jeżeli niemasz konta na github to warto je założyc - albo innej podobnej platformie. Przed pierwszym commitem skonfiguruj swoje dane:
git config --global user.name "Twoja Nazwa"
git config --global user.email "twoj@email.com"
git config --global core.editor "code --wait" # VS Code jako edytor
Sprawdź konfigurację:
git config --list
3. Tworzenie repozytorium
Opcja A: Nowe repozytorium (lokalne)
mkdir moj_projekt
cd moj_projekt
git init # Inicjalizuje puste repozytorium
Opcja B: Klonowanie istniejącego repozytorium (np. z GitHub)
git clone https://github.com/user/repo.git
cd repo
4. Dodawanie plików i pierwszy commit
# 1. Utwórz plik (np. README.md)
echo "# Mój Projekt" > README.md
# 2. Sprawdź status zmian
git status
# 3. Dodaj pliki do "staging area"
git add README.md
# Lub wszystkie zmienione pliki:
git add .
# 4. Zrób pierwszego commita
git commit -m "Pierwszy commit: dodano README"
# 5. Sprawdź historię
git log --oneline
5. Podstawowy workflow Gita
Komenda | Opis | Przykład |
---|---|---|
git add | Dodaje zmiany do indexu | git add plik.txt |
git commit | Zapisuje zmiany w repozytorium | git commit -m "opis" |
git status | Pokazuje nieśledzone/zmienione pliki | git status |
git log | Wyświetla historię commitów | git log --graph |
git diff | Pokazuje niezapisane zmiany | git diff |
6. Łączenie z GitHubem
- Stwórz nowe repozytorium na GitHubie (bez plików
.gitignore
aniREADME.md
). - Podłącz lokalne repozytorium do zdalnego:
git remote add origin https://github.com/user/repo.git
git branch -M main
git push -u origin main
7. Ignowowanie Plików (.gitignore)
Dzięki .gitignore
możesz wykluczyć niepotrzebne pliki (np. node_modules
) z repozytorium.
echo "node_modules/" > .gitignore
git add .gitignore
git commit -m "Dodano .gitignore"