.

.

piątek, 21 kwietnia 2017

Git - wprowadzenie i podstawowe komendy

Tu się wchodzi, naciska, ogląda się z bliska
Dalej, po lewej ręce, cudów więcej (...)

Nucę sobie ten kawałek Kalibra 44, myśląc o Gicie. ;) Tak mi się te dwa osobne byty kojarzą i łączą ze sobą (!?).

Teraz, nawet obudzona w nocy o północy, wyrecytuję bez zająknięcia: git status, git add ., git commit -m "komentarz", git push. Czyli podstawowe komendy w Gicie związane z commitowaniem zmian.

W sumie Gita polubiłam od razu. Bo jest dość efekciarski i robi wrażenie (na laiku). Piszesz coś w konsoli, commit automagicznie pojawia się na GitHubie, wszystkie zmiany są zaznaczone, co przybyło, co ubyło i gdzie. Niezła maszynka. Jak u Kalibra właśnie: "tu się wchodzi, naciska, ogląda się z bliska". ;) No super!

Co oczywiście nie znaczy, że nie miałam z Gitem swoich przygód (i że już nie będę ich miała). Zdarzało mi się np. wpisać git commit bez komentarza. A wtedy robi się niesympatycznie - otwiera się program vim i człowiek baranieje, bo nic nie może wpisać, a musi. Ratunkiem jest wykonanie następujących czynności: wciskamy przycisk Esc, wpisujemy (bo teraz można) :wq, wciskamy Enter. Pozwala to uzupełnić brakujący komentarz i z ulgą opuścić ten dziwny program.

Na początku trochę trudno było mi też złapać różnicę między samym Gitem a GitHubem. Ostatecznie poukładałam to sobie tak:

  • Git to "kucharz", który jest niewidoczny (na poziomie definicji, nie metafory, to rozproszony system kontroli wersji; server).
  • Jego namacalni i widoczni "kelnerzy" to:
    • Git Bash (konsola) - pozwala dostać się do Gita
    • GitHub web app - serwis internetowy do tworzenia repozytoriów, wykorzystujący Gita i umożliwiający dodatkowe operacje na Gicie, np. fork repo, pull request
    • GitHub desktop app - pozwala dostać się do Gita i GitHuba

Gita uczyłam się z kursów na Codecademy i Code School, z książki Pro Git (choć czytałam ją dość wybiórczo), no i po prostu w praktyce (z pewnym wsparciem speca od Gita), co jest zdecydowanie najlepszą metodą.

Poniżej, dla uporządkowania i usystematyzowania wiedzy, lista-ściągawka głównych komend gitowych:

  • git init
    stwórz nowe, puste repozytorium Gita w aktualnym folderze
  • git status
    pokaż status lokalnego repozytorium, w tym listę zmodyfikowanych plików
  • git add nazwa_pliku
    przygotuj plik nazwa_pliku do najbliższego commita (dodaj do stage)
  • git add . / git add -A
    przygotuj wszystkie pliki do najbliższego commita (dodaj do stage)
  • git commit -m "abc"
    wykonaj commit z komentarzem "abc", commit zawiera to, co zostało wcześniej przygotowane (dodane do stage)
  • git log
    pokaż historię aktualnej gałęzi (wyświetl listę wykonanych commitów)
  • git log --summary
    pokaż historię aktualnej gałęzi bardziej szczegółowo (wyświetl więcej informacji o poszczególnych commitach)
  • git diff
    pokaż różnice między zawartością lokalną a ostatnim commitem (czyli wszystko, co zostało zmienione od ostatniego commita, ale jeszcze nie zacommitowane ani nie przygotowane do commita, czyli wszystko, co w git status jest czerwone)
  • git push
    wyślij commity do zdalnego repozytorium
  • git clone git@github.com:beatrycze/buka.git
    sklonuj repozytorium przez SSH
  • git clone https://github.com/beatrycze/buka.git
    sklonuj repozytorium przez HTTPS
  • git commit --amend
    zmodyfikuj ostatni commit + zmień jego nazwę
    (Uwaga: zmiana nazwy w programie vim. Trzeba najpierw wcisnąć Insert (na dole konsoli powinna pojawić się informacja --WPROWADZANIE--, jeśli wyświetla się --ZAMIANA--, wciskamy Insert jeszcze raz) - to pozwoli zmodyfikować nazwę commita; następnie wciskamy Esc, wpisujemy :wq i wciskamy Enter. Uff! ;))
  • git commit --amend --no-edit
    zmodyfikuj ostatni commit bez zmiany jego nazwy
  • git push origin master -f
    usuń to, co jest na serwerze i zastąp lokalną historią zmian - bezwzględnie, siłą (-f, czyli force); przydatne w sytuacji, gdy repo lokalne i zdalne (na GitHubie) się zdesynchronizuje, czyli np. wtedy, gdy git commit --amend było wykonane na wypushowanym już commicie; uwaga: przed i w trakcie użycia zachować szczególną ostrożność, komenda z gatunku "tylko w ostateczności" :)

O pracy z branchami pisałam tutaj. Pozostaje jeszcze odrobić lekcję z wycofywania zmian. No i ćwiczyć, ćwiczyć, ćwiczyć... Żeby weszło w krew.


2 komentarze:

  1. No i pięknie. Miałem 5 min na przypomnienie sobie GITa i trafiłem we właściwe miejsce. Bardzo wygodne mini-zestawienie, dzięki ;)

    OdpowiedzUsuń
    Odpowiedzi
    1. Miło słyszeć. :) Cieszę się, że się przydało.

      Usuń