git to darmowy, otwartoźródłowy, rozproszony system kontroli wersji przy niewielkich nakładach operacyjnych wciąż pozostaje wydajny w wielkoskalowych projektach krzywa uczenia się gita jest z początku stroma - lecz po przebrnięciu przez konceptualne podstawy, technikalia płyną mówiąc najprościej: git śledzi treść podczas pracy z gitem, typowa konfiguracja obejmuje między innymi serwer z serwera można zrezygnować, lecz zwiększy to złożoność obsługi i zarządzania repozytoriami podczas pracy zespołowej serwer gita ułatwia współpracę, zapewniając dostępność centralnego i niezawodnego źródła danych - przechowuje zdalne repozytoria zgodnie z powszechną praktyką, na serwerze przechowujemy najaktualniejsze i zarazem najstabilniejsze dane wskazówka dot. nauki: w pierwszej kolejności warto poznać polecenia gita dla terminala, by dopiero po solidnym ugruntuowaniu podstaw, przesiąść się na przystępne, graficzne narzędzia w przeciwieństwie do innych systemów kontroli wersji, git nie śledzi zmian w projekcie jako list delt - list modyfikacji plików (czyli: do poprzedniej wersji dodano to/usunięto tamto) git zapisuje migawki - stany wszystkich plików z danej chwili -- analogia do albumu ze zdjęciami: tak wyglądał cały projekt w poniedziałek, a tak we wtorek git wspiera pracę lokalną - całą historię projektu przetrzymujesz na swojej maszynie, dzięki czemu stałe połączenie z internetem nie jest konieczne przy pracy git nie wykonuje niczego automatycznie - polecenia synchronizacji repozytoriów lokalnego-zdalnego muszą zostać wywołane jawnie git wspiera rozwój nieliniowy - można do woli eksperymentować nad projektem, towrząc rozgałęzienia względem stabilnego kodu (by potem dokonać pożądanych scaleń) i w tym miejscu uwaga: ponieważ gałąź jest w gicie zaimplementowana jako wskaźnik na ostatni commit gałęzi, pozostaje ona lekką, wręcz bezkosztową + pomiędzy gałęziami można przełączać się do woli - git ustawia wtedy stan projektu na stan wybranej wedle potrzeby migawki w terminalu (aplikacja Git Bash na windowsie): polecenie git (bez żadnych argumentów) wyświetli krótkie podsumowanie najczęściej używanych poleceń dla gita git help jak się okazuje wyświetla to samo co powyższe, puste polecenie git help subcommand wydrukuje dokumentację konkretnego polecenia git w terminalu git obsługuje zarówno krótkie jak i długie formy poleceń, tudzież: git commit -m="Fix a typo" git commit --message="Fix a typo" choć niektóre z opcji zostały zaimplementowane wyłącznie w jednej formie repozytorium utworzyć można na dwa sposoby: albo tworząc nowe zupełnie od podstaw, albo klonując z serwera zdalnego już istniejące, wraz z całą jego historią do pracy z gitem wymagana jest podstawowa konfiguracja tożsamości - imię i adres e-mail git config user.name "Adam Rębowicz" git config user.email "arebowicz@gmail.com" bez zdefiniowwanej tożsamości, trzeba będzie określać ją (żmudnie) na końcu każdego polecenia, np.: git commit -m="msg" --author="Adam Rębowicz " $ mkdir ~/my_website $ cd ~/my_website $ echo 'My awesome website!' > index.html $ git init -b main cztery powyższe komendy dadzą ten sam rezultat co poniższe $ git init -b main ~/my_website $ cd ~/my_website $ echo 'My awesome website!' > index.html opcja -b w poleceniu git init ustawia nazwę domyślnej gałęzi "konwersja" folderu w repozytorium gita jest identyczna czy to dla folderu pełnego plików czy dla folderu pustego komenda git init tworzy w projekcie ukryty katalog .git w którym znajdą się historia i rozmaite metadane . └── my_website ├── .git/ │ └── Hidden git objects └── index.html w tym przykładzie katalog /my_website jest tzw. katalogiem roboczym (working directory) projektu - znajduje się w nim aktualnie edytowana wersja projektu