You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
git status - pokazuje nam w jakich plikach zrobiliśmy zmiany i te, które będą dodane w następnym commicie
HEAD - aktualny branch
HEAD~n, n commitów do tyłu
HEAD^n, n-ty rodzic commita
2. Podstawowe operacje między plikami a systemem kontroli wersji:
git add file - dodawanie plików
git add -p file - flaga -p mówi nam że możemy zadecydować o każdej zmianie z osobna
git commit -m "mess" - tworzy commita o tytule "mess"
git commit -am "mess" - dodaje wszystkie zmiany w plikach i tworzy z nich commita o tytule "mess"
git commit - otwiera edytor tekstu, gdzie można wpisać tytuł i body
git rm file - usuwa plik
git rm -r dict - usuwa folder
git diff - pokazuje różnice w plikach zmodyfikowanych
3. Błędy popełniane przy commitach:
git log - wyświetla wszystkie commity
git restore file
usuwa wszystkie niezastagowane zmiany
jeśli dopieroco usunęliśmy plik można go przywrócić
jak dodamy flagę -p możemy wybrać które zmiany chcemy usunąć
git commit --amend -m "Inna nazwa"
służy do zmiany nazwy ostatniego commita
dodatkowo jeśli dodamy jakiś plik (git add f), a następnie zrobimy git commit --amend -m "nowa nazwa" to ten plik się również doda do poprzedniego commita
nie używamy tego gdy coś już jest na publicznym repo bo to przeszkadza innym ziomkom
git revert <commit name>
tworzy nowego commita z przywróconymi zmianami z commita <commit name> (takie ctrl-z ale zachowóje wszystkie commity które były po drodze)
git reset --hard HEAD~1
usuwa ostatniego commita
--hard mówi nam że wszystkie zmiany muszą zostać usunięte
--mixed zostawia wszystkie zmiany które były w commitach usuniętych
git restore --source <commit name> <file name>
przywraca wersję pliku <file name> z commita <commit name> do aktualnego pliku
git cherry-pick
kopiuje commit <commit name> do aktualnego brancha
git reflog
coś jak git log, ale zawiera informacje o wszystkim co się dzieje a nie tylko o commitach (czyli o resetach, rebaseach, commitach, praktycznie wszystko co jest ważne)
żeby wrócić do jakiegoś usuniętego commita to kopiujemy nazwę commita z refloga a potem robimy nowego brancha z tym commitem
4. Remote repo:
inicjalizacja;
najpierw musimy stworzyć repo w przeglądarce nie da się z poziomu terminala :(
git add origin nazwa.git
teraz jeśli mamy już jakiegoś commita możemy go połączyć z internetowym repo za pomocą komendy git push -u origin <name>
git checkout --track -b <name> origin/<name> - dodaje brancha <name> z internetowego repozytorium do lokalnego repozytorium
git push dodaje wszystkie zcommitowane zmiany do internetowego repo
git pull ściąga z repo wszystkie zmiany
5. Branche i techniki branchowania:
tworzenie nowego brancha:
git branch <name>
git checkout -b <name>
switchowanie się między branchami:
git switch <name>
git checkout <name>
zmiana nazwy brancha
git branch -m <name> zmienia HEAD
git branch -m <old> <new> zmienia nazwę brancha old na new
żeby zmienić nazwę opublikowanego brancha, trzeba najpierw usunąć starego git push origin --delete <old>, a następnie dodać nowego - git push -u origin <new>
branche short-lived i long-running:
short-lived - branche, które się buduje po to żeby spełniał określoną funkcję np. feature/payments, zazwyczaj są usuwane gdy spełni swoje zadanie
long-running - branche główne typu main, production, develop. Od których głównie odchodzą branche short-lived
GitFlow, Github Flow, Mainline development
GitFlow to konwencja polegająca na stworzeniu dwóch long-running branchy - main oraz develop, a później dołączaniu do nich short-lived branchy np. feature, fix
Github Flow jest konwencją w której mamy tylko jednego long-running barncha - main, a do niego tworzymy short-lived branche np. feature, fix
Mainline Development to konwencja w której każdy commit trafia do main'a - nie tworzymy innych branchy
Opcje -p
y - stage this hunk
n - do not stage this hunk
a - stage this and all the remaining hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help