GIT średniozaawansowany
$9.00
Minimalna cena
$19.00
Sugerowana cena

GIT średniozaawansowany

Znaj abstrakcje, których używasz.

O książce

Odkryj wewnętrzne piękno i elegancję Gita! Naucz się tworzyć porządne, profesjonalne repozytoria!

Mając w głowie poprawne abstrakcje, wiesz dlaczego i co powinno się zrobić.

Odpowiedź na pytanie jak to zrobić jest wówczas łatwiejsza.

„GIT średniozaawansowany” daje Czytelnikowi wyczucie mechaniki Gita. Szczególnie przydatne, gdy wystąpią sytuacje nieoczywiste.

Na pierwszy rzut oka, Git sprawia wrażenie plątaniny dziwacznych komend z niezrozumiałymi parametrami. Dokumentacja jest trudna w czytaniu. Tak więc wydaje się, że próg wejścia jest wysoki. Rodzi to naturalną pokusę pójścia po linii najmniejszego oporu: nauczenia się kilku operacji (wykonywanych z linii komend, narzędzia graficznego lub IDE) typowych dla sposobu pracy zespołu.

W konsekwencji repozytorium jest zaśmiecone wersjami projektu o słabej jakości, z których wiele nie spełnia ustanowionych standardów. Są to np.:

Wersje „under construction”: Zmiany zatwierdzone „przed obiadem”, po code review itd. Ok, można sobie z tym od biedy radzić, np. używając opcji --squash.

Wiele niekoherentnych zmian w jednej wersji: Zmiany trudne do przejrzenia/zrozumienia; utrudniające/uniemożliwiające wycofanie się z części z nich. Okazuje się, że nie działa tu zasada „łatwiej kijek pocienkować, niż go potem pogrubasić”.

Czy w roku 2023 takie zaśmiecone repozytorium to nie za mało dla prawdziwie profesjonalnego zespołu? Czy naprawdę jednostką sukcesu powinna być scalona — zesquashowana bądź nie — gałąź? Może jednak należy dążyć do sytuacji, gdy każdy commit wprowadza jedną autonomiczną zmianę?

„GIT średniozaawansowany” jest krótki.

Na 100 stronach luźnego tekstu A4 książka — często poprzez eksperymenty — wprowadza w świat abstrakcji Gita. Daje Czytelnikowi aparat pojęciowy i praktyczną wiedzę zilustrowaną przykładami.

Głównych pojęć potrzebnych, aby czuć mechanikę Gita (dlaczego i co należy robić), jest niewiele. Są to:

  • Repozytorium jako graf commitów.
  • Refy (różnego rodzaju) jako narzędzia służące do uprawiania grafu (lokalnego i zdalnych).
  • Niezmienniczość grafu, a przepisywanie historii (przeszczepianie commitów).
  • Współpraca repozytorium lokalnego z repozytoriami zdalnymi jako współdzielenie podgrafów.

Metafory wszystkich tych pojęć wraz z ich wzajemnymi powiązaniami zmieściły się na okładce! Czy potrafisz je rozpoznać? Sprawdź krótką sesję youtube: Making the front cover.

W książce autor „odczarowuje” często niezrozumiałe lub błędnie postrzegane pojęcia szczegółowe (jak coś można zrobić):

  • commit
  • indeks/staging area
  • reset
  • rebase
  • fast-forward-merge
  • konflikt scalania

Książka może posłużyć jako przewodnik „od zera do bohatera”,

ale nawet po miesiącach/latach użytkowania Gita,

warto czasem zatrzymać się na chwilę i wrócić do źródeł.

Opisywane tematy zilustrowane są przykładami i zawierają odnośniki do dokumentacji. Kwestie zaawansowane (np. refspec) oraz obszerne (np. git log) opisane są syntetycznie, ze wskazaniem interesujących zagadnień i odesłaniem do odpowiednich fragmentów dokumentacji.

Powtórzenia zawarte w książce są zamierzone, mają one pomóc Czytelnikowi utrwalić sobie właściwe pojęcia.

O autorze

Spis treści

Git średniozaawansowany - TOC
  • Wstęp
  • Część I: Git lokalnie
    •    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
    •    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
    •    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
    •    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
          •          <new-base>
          •          <branch>
          •          <upstream>
        •        4.6.6. Rebase interaktywny
      •      4.7. git reset nie tworzy commitów
      •      4.8. git gc, czyli odśmiecanie
    •    5. Prawdziwa praca
      •      5.1. Narzędzia graficzne, czyli Git nie jest twardogłowy.
      •      5.2. Drzewo robocze, czyli katalog roboczy
      •      5.3. Indeks (staging area)
      •      5.4. Przygotowywanie nowego commita, czyli ciężka praca
        •        5.4.1. Odnotowywanie w indeksie zmian dokonanych w drzewie roboczym
          •          git add, czyli dodanie nowej wersji pliku do indeksu
          •          git rm, czyli usunięcie pliku z drzewa roboczego i/lub indeksu
        •        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
          •          --soft, czyli cofnięcie fazy commit
          •          --mixed, czyli cofnięcie faz: commit i stage
          •          --hard, czyli cofnięcie faz: commit, stage i edition
        •        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
    •    6. Przeglądanie historii
      •    %nbsp 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
          •          Prezentacja commita
          •          Prezentacja różnicy pomiędzy commitami
      •      6.2. git shortlog, czyli podsumowanie historii
  • Część II: Git zdalnie
    •    7. Zdalne repozytorium
      •      7.1. git remote, czyli repozytoria zdalne
        •        7.1.1. Definiowanie zdalnego repozytorium
          •          Nazwa zdalnego repozytorium
          •          Namiary na zdalne repozytorium
        •        7.1.2. Współpraca repozytoriów
      •      7.2. Gałęzie lokale, zdalne, śledzące oraz śledzenia i upstreamy śledzących
        •        7.2.1. Jawne ustawianie upstreama
    •    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
  • Część III: Uzupełnienia
    •    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
          •          Bez podania <refspec>
          •          Z podaniem <refspec>
          •          Przykłady
        •        9.1.4. Podczas wypychania
          •          Przykłady
      •      9.2. repository, czyli nie tylko <remote>
    •    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

60-dniowa gwarancja zwrotu pieniędzy

Leanpub posiada 60-dniową gwarancję bezwarunkowego zwrotu pieniędzy na każdy zakup w dwóch prostych krokach. Zwroty obsługujemy ręcznie więc środki mogą się pojawić na twoim koncie po kilku dniach. Zobacz warunki świadczenia usług..

80% Royalties. Earn $16 on a $20 book.

We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earnedover $12 millionwriting, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets, and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Pisz i publikuj na platformie Leanpub

Authors and publishers use Leanpub to publish amazing in-progress and completed ebooks, just like this one. You can use Leanpub to write, publish and sell your book as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Przeczytaj więcej o pisaniu na platformie Leanpub