Skip to content
Na tej stronie

Przykładowe scenariusze git

Komenda git służy do zarządzania historią drzewa kodu. Tutaj zestawiliśmy popularne scenariusze wraz z odpowiednimi komendami.

Przykładowy scenariusz

Skonfiguruj dane osobowe używane przez narzędzie git

bash
git config --global user.name "Jacek z Parzychedu"
git config --global user.email "jacek@parzychedu.pl"
git config --global user.name "Jacek z Parzychedu"
git config --global user.email "jacek@parzychedu.pl"

Utwórz repozytorium git w katalogu roboczym

bash
git init
git init

Utworzymy przykładowe pliki README.md i src/main.py

bash
mkdir src
touch README.md src/main.py
mkdir src
touch README.md src/main.py

Dodaj pliki wewnątrz katalogu roboczego do indeksu

bash
git add .
git add .

Wyświetl obecny stan drzewa roboczego

bash
git status
git status
bash
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md
        new file:   src/main.py
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md
        new file:   src/main.py

Zapisz zmiany z indeksu do commita

bash
git commit -m 'Utworzenie pierwszych plików'
git commit -m 'Utworzenie pierwszych plików'
bash
[main (root-commit) 6824fba] Utworzenie pierwszych plików
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
 create mode 100644 src/main.py
[main (root-commit) 6824fba] Utworzenie pierwszych plików
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
 create mode 100644 src/main.py

Utwórz nową gałąź na podstawie obecnego drzewa roboczego i ustaw drzewo robocze na tę gałąź

bash
git switch -c 'nowy-kod'
git switch -c 'nowy-kod'
bash
Switched to a new branch 'nowy-kod'
Switched to a new branch 'nowy-kod'

Zastosuj zmiany z katalogu drzewa roboczego

bash
rm src/main.py
touch src/main.cpp src/lib.h src/lib.cpp
rm src/main.py
touch src/main.cpp src/lib.h src/lib.cpp
bash
git add ./src/
git status
git commit -m 'Usunięcie main.py i dodanie plików cpp'
git add ./src/
git status
git commit -m 'Usunięcie main.py i dodanie plików cpp'
bash
jacek@parzychedu:~/repos/przyklad$ git add ./src/
jacek@parzychedu:~/repos/przyklad$ git status
On branch nowy-kod
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed:    src/main.py -> src/lib.cpp
        new file:   src/lib.h
        new file:   src/main.cpp

jacek@parzychedu:~/repos/przyklad$ git commit -m 'Usunięcie main.py i dodanie plików cpp'
[nowy-kod 0b052fc] Usunięcie main.py i dodanie plików cpp
 3 files changed, 0 insertions(+), 0 deletions(-)
 rename src/{main.py => lib.cpp} (100%)
 create mode 100644 src/lib.h
 create mode 100644 src/main.cpp
jacek@parzychedu:~/repos/przyklad$ git add ./src/
jacek@parzychedu:~/repos/przyklad$ git status
On branch nowy-kod
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed:    src/main.py -> src/lib.cpp
        new file:   src/lib.h
        new file:   src/main.cpp

jacek@parzychedu:~/repos/przyklad$ git commit -m 'Usunięcie main.py i dodanie plików cpp'
[nowy-kod 0b052fc] Usunięcie main.py i dodanie plików cpp
 3 files changed, 0 insertions(+), 0 deletions(-)
 rename src/{main.py => lib.cpp} (100%)
 create mode 100644 src/lib.h
 create mode 100644 src/main.cpp

Ustaw drzewo robocze na gałąź

bash
git switch main
git switch main
bash
Switched to branch 'master'
Switched to branch 'master'

Scal zmiany z gałęzi do obecnie wybranej gałęzi, tworząc przy tym nowy commit

bash
git merge nowy-kod
git merge nowy-kod
bash
Updating 6824fba..0b052fc
Fast-forward
 src/{main.py => lib.cpp} | 0
 src/lib.h                | 0
 src/main.cpp             | 0
 3 files changed, 0 insertions(+), 0 deletions(-)
 rename src/{main.py => lib.cpp} (100%)
 create mode 100644 src/lib.h
 create mode 100644 src/main.cpp
Updating 6824fba..0b052fc
Fast-forward
 src/{main.py => lib.cpp} | 0
 src/lib.h                | 0
 src/main.cpp             | 0
 3 files changed, 0 insertions(+), 0 deletions(-)
 rename src/{main.py => lib.cpp} (100%)
 create mode 100644 src/lib.h
 create mode 100644 src/main.cpp

Ustaw serwer zdalny przechowujący repozytorium

bash
git remote add origin https://gitlab.parzychedu.pl/jacek/przyklad.git
git remote add origin https://gitlab.parzychedu.pl/jacek/przyklad.git

Wskazówka 😃

Zaleca się używanie protokołu SSH zamiast HTTPS. Umożliwia on automatyczne logowanie i większe bezpieczeństwo.

bash
git remote add origin jacek@gitlab.parzychedu.pl:jacek/przyklad
git remote add origin jacek@gitlab.parzychedu.pl:jacek/przyklad

Prześlij obecną gałąź do serwera zdalnego

bash
git push origin
git push origin

Dodatkowe operacje wewnątrz repozytorium

Włączenie innego repozytorium git wewnątrz naszego drzewa jako podmoduł

bash
git submodule add https://gitlab.parzychedu.pl/jacek/przykladowy-projekt.git zewnetrzny-projekt
git submodule add https://gitlab.parzychedu.pl/jacek/przykladowy-projekt.git zewnetrzny-projekt

Pobranie podmodułów wewnątrz odpowiednich katalogów

bash
git submodule init --update
git submodule init --update

Dodatkowe komendy

Ustaw alias komendy git

bash
git config --global alias.st status
git config --global alias.st status

Teraz komenda git st jest równoważna z git status.