Tryb nocny
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
.