Szczegóły ebooka

Git. Od koncepcji do praktyki

Git. Od koncepcji do praktyki

Jacek Drąg

Ebook

Kontroluj rozwój Twojego oprogramowania

Git to aktualnie najpopularniejszy na świecie system kontroli wersji. Dzięki niemu możliwe jest śledzenie modyfikacji w kodzie źródłowym i łączenie zmian w plikach dokonanych przez różne osoby w różnym czasie. Git oferuje wiele możliwości, jest bardzo elastyczny i nie narzuca sposobu, w jaki należy w nim pracować. Można to robić na przykład przy użyciu programów graficznych, które znacznie ułatwiają realizację niektórych celów, szczególnie w zakresie przeglądania historii pracy nad kodem czy rozwiązywania konfliktów.

Ta książka koncentruje się głównie na rozwijaniu repozytorium kodu, czyli tworzeniu grafu commitów zawierających poszczególne wersje. Do realizacji tego zadania idealnym, bo najpotężniejszym narzędziem jest wiersz poleceń - i właśnie z niego korzystamy w poradniku. Druga kwestia, którą się zajmujemy, to próba zrozumienia, co Git mówi do nas w trakcie pracy. Tak, mówi, ponieważ gdy zlecimy mu wykonanie jakiejś komendy, Git najprawdopodobniej nie tylko ją wykona, ale także skomentuje stan obecny, co nieco podpowie, zwróci uwagę, jeśli coś się nie uda, i wskaże sposób, jak to poprawić.

Uruchom Gita, otwórz książkę i poznaj:

  • Koncepcje (byty, abstrakcje), którymi posługuje się Git
  • Polecenia wysokiego poziomu wraz z najczęstszymi przypadkami ich użycia
  • Sposoby pracy w środowisku lokalnym i rozproszonym

Wstęp

Część I. Git lokalnie

Rozdział 1. Konfiguracja

  • 1.1. Instalacja
  • 1.2. git config, czyli konfigurowanie
    • 1.2.1. Konfiguracje lokalne i globalne
    • 1.2.2. Struktura pliku konfiguracyjnego
    • 1.2.3. Przeglądanie wartości
    • 1.2.4. Ustawianie wartości
    • 1.2.5. Aliasy poleceń
    • 1.2.6. Usuwanie wartości
  • 1.3. Minimalna konfiguracja
  • 1.4. Często używane opcje
  • 1.5. Rzadko używane opcje
  • 1.6. Konfiguracja używana w tej książce

Rozdział 2. Repozytorium lokalne

  • 2.1. git - the stupid content tracker
    • 2.1.1. Śledzenie historii zmian, czyli historia commitów
    • 2.1.2. Zawartość projektu
    • 2.1.3. Pliki tekstowe, pliki binarne
  • 2.2. Katalog .git, czyli repozytorium Gita
  • 2.3. Obiekty w repozytorium, graf commitów, mapa adresowana zawartością
    • 2.3.1. Obiekt commit
    • 2.3.2. Graf commitów
    • 2.3.3. Commit ID, mapa obiektów (baza danych)
    • 2.3.4. Pozostałe rodzaje obiektów
    • 2.3.5. Niemodyfikowalność commitów i grafu commitów
    • 2.3.6. Dualizm - graf a baza danych
    • 2.3.7. merge commits
  • 2.4. Refy - zwykłe i symboliczne, gałęzie
    • 2.4.1. Najważniejszy ref - HEAD
    • 2.4.2. Kilka eksperymentów z refami i HEAD-em
    • 2.4.3. Głowy, czyli czubki gałęzi, czyli gałęzie
    • 2.4.4. Konwencje nazewnicze
    • 2.4.5. Przydatne polecenia
    • 2.4.6. Etykietki

Rozdział 3. Zabawy z grafem

  • 3.1. Trochę przygotowań technicznych
  • 3.2. git commit, czyli tworzenie nowego commita, czyli rozbudowa grafu
    • 3.2.1. Używane komendy
    • 3.2.2. Pierwsze próby
    • 3.2.3. Troszkę ćwiczeń
  • 3.3. git merge, czyli zrastanie się gałęzi
    • 3.3.1. Feature/topic branch
    • 3.3.2. Zwykłe scalanie
    • 3.3.3. Fast-forward merge
    • 3.3.4. git merge-base, czyli scalanie "trójstronne" i jego baza
    • 3.3.5. Octopus merge
    • 3.3.6. Wymuszanie rodzaju scalania
  • 3.4. Wyrażenia adresujące, czyli chodzenie po grafie i zbiory commitów
    • 3.4.1. Wyrażenia identyfikujące commit
    • 3.4.2. Wyrażenia identyfikujące inne obiekty Gita
    • 3.4.3. Wersje blobów i drzew
    • 3.4.4. Wyrażenia identyfikujące zakresy commitów

Rozdział 4. Przepisywanie historii

  • 4.1. Wstęp
    • 4.1.1. Mała powtórka
    • 4.1.2. Relacja rodzica a relacja dziecka
    • 4.1.3. Historia commita
    • 4.1.4. Niezmienna, ale przepisywalna
  • 4.2. git reflog, czyli lokalna historia zmian refów
  • 4.3. git commit --amend, czyli poprawka ostatniego commita
  • 4.4. git revert, czyli odkręcenie wprowadzonych zmian
  • 4.5. git cherry-pick, czyli przeszczepianie commita/zbioru commitów
  • 4.6. git rebase, czyli przeszczepianie gałęzi
    • 4.6.1. Uwzględnienie zmian z master w feature (integrowanie zmian)
    • 4.6.2. Uwzględnienie zmian z feature w master (wcielanie zmian)
    • 4.6.3. Postać polecenia
    • 4.6.4. Jak to działa
    • 4.6.5. Parametry i ich wartości domyślne
    • 4.6.6. Rebase interaktywny
  • 4.7. git reset nie tworzy commitów
  • 4.8. git gc, czyli odśmiecanie

Rozdział 5. Prawdziwa praca

  • 5.1. Narzędzia graficzne, czyli Git nie jest twardogłowy
  • 5.2. Drzewo robocze, czyli katalog roboczy
  • 5.3. Indeks (ang. staging area)
  • 5.4. Przygotowywanie nowego commita, czyli ciężka praca
    • 5.4.1. Odnotowywanie w indeksie zmian dokonanych w drzewie roboczym
    • 5.4.2. Cofanie zmian w indeksie
  • 5.5. git commit, czyli bułka z masłem
    • 5.5.1. A może praca bez ciężkiej harówy?
    • 5.5.2. Zatwierdzanie z pominięciem indeksu?
  • 5.6. git stash, czyli chwilowe schowanie zmian
  • 5.7. .gitignore, czyli pliki, których nie chcemy śledzić
  • 5.8. git checkout, czyli odtworzenie zapamiętanego stanu
    • 5.8.1. Przełączanie pomiędzy gałęziami
    • 5.8.2. Przełączenie do poprzedniej gałęzi
    • 5.8.3. Odtwarzanie stanów poszczególnych plików
    • 5.8.4. Niejednoznaczność parametrów
    • 5.8.5. Pliki niemonitorowane itp.
  • 5.9. git reset, czyli przygotowywanie commita od nowa
    • 5.9.1. Reset jako cofnięcie commita, aby zrobić go jeszcze raz
    • 5.9.2. Reset poszczególnych plików, czyli przywracanie w indeksie
  • 5.10. git checkout a git reset
  • 5.11. Scalanie szczegółowo, konflikty scalania
    • 5.11.1. Rozpoczynanie, przerywanie i kontynuowanie
    • 5.11.2. Strony scalania - ours i theirs
    • 5.11.3. commity, drzewa, bloby
    • 5.11.4. Scalanie w indeksie
    • 5.11.5. Rozwiązywanie konfliktów
    • 5.11.6. Strategie scalania
  • 5.12. git rerere, czyli wielokrotne rozwiązywanie tego samego konfliktu

Rozdział 6. Przeglądanie historii

  • 6.1. git log, czyli przeglądanie historii
    • 6.1.1. Filtrowanie wyniku
    • 6.1.2. Sortowanie
    • 6.1.3. Graf
    • 6.1.4. Formatowanie wyniku
  • 6.2. git shortlog, czyli podsumowanie historii

Część II. Git zdalnie

Rozdział 7. Zdalne repozytorium

  • 7.1. git remote, czyli repozytoria zdalne
    • 7.1.1. Definiowanie zdalnego repozytorium
    • 7.1.2. Współpraca repozytoriów
  • 7.2. Gałęzie lokalne, zdalne, śledzące oraz śledzenia i upstreamy śledzących
    • 7.2.1. Jawne ustawianie upstreama

Rozdział 8. Pobieranie i wypychanie

  • 8.1. git fetch, czyli pobieranie podgrafów ze zdalnego repozytorium
    • 8.1.1. Pobieranie pojedynczej gałęzi
    • 8.1.2. Pobieranie wielu gałęzi
    • 8.1.3. Ogólna postać pobierania
    • 8.1.4. Usuwanie uschniętych gałęzi
    • 8.1.5. Przydatne opcje
  • 8.2. git push, czyli wysłanie podgrafów do repozytorium zdalnego
    • 8.2.1. Wypychanie pojedynczej gałęzi
    • 8.2.2. Wypychanie z utworzeniem gałęzi śledzenia
    • 8.2.3. Ogólna postać wypychania
    • 8.2.4. Usunięcie zdalnej gałęzi
    • 8.2.5. Zmiany non-fast-forward
    • 8.2.6. Po stronie zdalnego repozytorium
    • 8.2.7. Przydatne opcje
  • 8.3. git pull, czyli fetch i merge/rebase naraz
  • 8.4. git clone, czyli utworzenie repozytorium podrzędnego
    • 8.4.1. Przydatne opcje
    • 8.4.2. Inne ciekawe opcje

Rozdział 9. Konfiguracja repozytoriów

  • 9.1. refspec, czyli mapowanie pomiędzy repozytorium lokalnym a zdalnym
    • 9.1.1. Składnia
    • 9.1.2. .git/config
    • 9.1.3. Podczas pobierania
    • 9.1.4. Podczas wypychania
  • 9.2. repository, czyli nie tylko <remote>

Rozdział 10. Uzgadnianie zmian raz jeszcze

  • 10.1. git checkout - tworzenie gałęzi lokalnej na podstawie gałęzi śledzenia
  • 10.2. git rebase - domyślne wartości parametrów
  • 10.3. Konfiguracja domyślnej pracy z rebase zamiast merge

Zakończenie

  • Tytuł: Git. Od koncepcji do praktyki
  • Autor: Jacek Drąg
  • ISBN: 978-83-289-1686-9, 9788328916869
  • Data wydania: 2024-07-30
  • Format: Ebook
  • Identyfikator pozycji: gitsre
  • Wydawca: Helion
  • Kategoria wiekowa: 14+