W poście tym znaleźć można zbiór podstawowych komend wykorzystywanych podczas pracy z systemem Git.
Doskonałym źródłem informacji na temat Gita jest książka Pro Git
Inne publikacje:
Zbiór komend na GitHub,
Artykuł Mariusza Nosińskiego (podstawy),
Książka "Git.Rozproszony system kontroli wersji" Włodzimierza Gajdy, wyd. Helion,
Książka "Git" na Wikibooks,
Książka "Git Magic" aut. Ben Lynn.
UWAGA! Post jest systematycznie uaktualniany.
Globalna konfiguracja przed pierwszym użyciem polega na dodaniu nazwy użytkownika oraz jego adresu e-mail:
git config --global user.name "hexen2k"
git config --global user.email "hexen2k@gmail.com"
Inicjalizacja repozytorium:
git initDodanie pliku do poczekalni (inna spotykana nazwa: indeksu). Dzięki temu zmiany są monitorowane przez Gita:
git add nazwa_plikuIndeksacja wszystkich plików (nowe, zmodyfikowane, usunięte):
git add -AIndeksacja nowych plików (bez dodawania plików zmodyfikowanych oraz usuniętych):
git add .Indeksacja plików śledzonych (zmodyfikowanych lub usuniętych). Pomija pliki nowe:
git add -u
Usunięcie pliku z dysku oraz poczekalni:
git rm nazwa_plikuUsunięcie pliku z poczekalni. Zakończenie śledzenia pliku:
git rm --cached nazwa_plikuZmiana nazwy pliku (fizycznie na dysku oraz w indeksie):
git mv nazwa_przed nazwa_po
Tworzenie nowego commita w aktualnie rozwijanej gałęzi:
git commit -m 'opcjonalny komentarz'gdzie opcjonalny parametr -m pozwala określić komentarz do commita. W przypadku jego braku wyświetli się okno edytora tekstowego z możliwością edycji komentarza.
Tworzenie commita z pominięciem poczekalni:
git commit -apolecenie nie dodaje do commita plików nie śledzonych. Należy dodać je ręcznie poleceniem git add. Można także wykorzystać jeden z dwóch sposobów:
git add -A
git commit -m "opis"lub
git add .
git commit -a -m "opis"
Poprawienie ostatniego commita (nowym):
git commit --amendTen sam cel można osiągnąć w nieco inny sposób:
git reset --soft HEAD~1 (usuwa ostatni commit bez kasowania plików)UWAGA! Używanie komend jest bezpieczne jedynie podczas zmian lokalnych - więcej szczegółów. Po wysłaniu commita na serwer i udostępnieniu pozostałym uczestnikom projektu nie można modyfikować commitów (chodzi o spójność danych między wszystkimi uczestnikami projektu).
git commit -m 'nowy komentarz'
Plik z listą plików ignorowanych przez Gita:
.gitignore
Wyświetlanie statusu zmian w śledzonych plikach.
git statuswersja kompaktowa:
git status -sb
Cofnięcie operacji dodania pliku do poczekalni:
git reset HEAD nazwa_plikuPrzywrócenie pliku w obszarze roboczym do ostatniej wersji z poczekalni (jeśli nie było żadnych zmian to pobierana jest wersja pliku z ostatniego commita):
git checkout -- nazwa_plikudwie kreseczki są potrzebne do odróżnienia polecenia od zmiany branchy (np. git checkout testing).
Przywrócenie pliku do wersji z określonego commita:
git checkout nazwa_commita nazwa_pliku
Wyświetlenie listy commitów:
git logWyświetlenie listy commitów w jednej linii:
git log --pretty=onelineWyświetlenie listy commitów w jednej linii z 7 pierwszymi znakami identyfikatora SHA:
git log --pretty=oneline --abbrev-commit
Wyświetlenie listy commitów tylko aktywnej gałęzi:
git log --first-parent
Wyświetlanie wszystkich tagów:
git tagTagowanie ostatniego commita (tag lekki):
git tag nazwa_taguUsunięcie tego tagu:
git tag -d nazwa_taguRozszerzony tag (opisowy) - nazwa i dłuższy komentarz do niego:
git tag -a nazwa_tagu -m 'Dłuższy komentarz opisujący nazwa_tagu'Etykietowanie wcześniejszych wersji commitów (opisowy, lekki):
git tag -a nazwa_tagu skrocona_suma_kontrolna_commita -m 'komentarz do tagu opisowego'
git tag nazwa_tagu skrócona_suma_kontrolnaWyświetlanie wszystkich branchy:
git branch -vbez parametru -v wyświetli listę bez ostatnio zatwierdzonych zmian (komentarzy) i skróconych SHA1.
Tworzenie nowego brancha (na aktywnej gałęzi):
git branch nowy_branchTworzenie nowego brancha na innym commicie/gałęzi:
git branch nowy_branch stary_branch
Przełączanie brancha:
git checkout nazwa_branchaTworzenie brancha i natychmiastowe przełączenie się na niego:
git checkout -b nowy_branchMergowanie (łączenie) branchy. Będąc np. na gałęzi master dołączamy do niej gałąź testing:
git merge testingUsunięcie zbędnego brancha po dołączeniu np. do brancha mastera:
git branch -d nazwa_zbędnego_branchaJeśli branch nie był mergowany usunięcie należy wymusić:
git branch -D nazwa_zbędnego_branchaUsunięcie ostatniego commita w aktywnym branchu:
git reset --soft HEAD~1 (bez kasowania zmian)
git reset --hard HEAD~1 (kasuje wszystkie zmiany)
Wyświetlenie zmian w śledzonych plikach - między poczekalnią a aktualnymi zmianami (inaczej - co zostało zmienione (dotyczy tylko plików śledzonych) ale nie wysłane do poczekalni):
git diffWyświetlenie zawartości poczekalni, która zostanie wysłana w następnym commicie:
git diff --cached
Wyświetlenie wszystkich zmian w śledzonych plikach od danego commita (np. ostatniego jeśli podamy HEAD):
git diff nazwa_commitapolecenie to łączy wynik komendy git diff oraz git diff --cached.
Zmiany między commitami:
git diff nazwa_commita nazwa2_commitaMiędzy dwoma ostatnimi commitami:
git diff HEAD^ HEADPrzywrócenie plików w obszarze roboczym do wersji z ostatniego Commita (UWAGA! ostrożnie - można przypadkowo skasować dane):
git reset --hard
git reset --hard HEADJeśli w folderze znajdowały się nowo utworzone pliki, których chcemy się w tym momencie pozbyć, musimy skasować wszystkie pliki z obszaru roboczego i wykonać powyższe polecenie.
Repozytoria zdalne.
Opis pochodzi z portalu Bitbucket (pojawia się po założeniu nowego repo):
zaczynam od zera:
Set up your local directory
Set up Git on your machine if you haven't already.
mkdir /path/to/your/project
cd /path/to/your/project
git init
git remote add origin git@bitbucket.org:hexen2k/nazwanowegorepo.git
Create your first file, commit, and push
echo "hexen2k" >> contributors.txt
git add contributors.txt
git commit -m 'Initial commit with contributors'
git push -u origin master
mam istniejący projekt:
cd /path/to/my/repo
git remote add origin git@bitbucket.org:hexen2k/nazwanowegorepo.git
git push -u origin --all # pushes up the repo and its refs for the first time
git push -u origin --tags # pushes up any tags
Gdzie: hexen2k to nawa użytkownika, nazwanowegorepo to nazwa nowo utworzonego repozytorium za pomocą strony www.