Git. Od koncepcji do praktyki - ebook
Git. Od koncepcji do praktyki - 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
Spis treści
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
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-1686-9 |
Rozmiar pliku: | 3,6 MB |