Skip to content

Instantly share code, notes, and snippets.

@Kabanosk
Created June 11, 2022 18:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Kabanosk/64b4331ebd73be679f258a48370f7251 to your computer and use it in GitHub Desktop.
Save Kabanosk/64b4331ebd73be679f258a48370f7251 to your computer and use it in GitHub Desktop.
Notes about git in Polish language

KURS GITA

1. Inicjalizacja systemu kontroli wersji

  • git init - inicjalizuje repozytorium git
  • 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 push -u origin <name> - dodaje brancha do internetowego repozytorium
  • 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment