Narzędzie kontroli wersji GIT - scenariusze
Przykłady użycia narzędzia kontroli wersji
Przygotowanie
Zainstaluj narzedzie w systemie operacyjnym
Załóż katalog do pracy
21-git
Wykonuj polecenia scenariuszy 1-5
Opis
#1 scenariusz - inicjowanie lokalnego Repozytorium i jego konfiguracja ..
# .. oraz wykonanie pierwszego Commitu
# przygotowanie środowiska Projektu
mkdir -p /home/student/Dokumenty/git/proj-1
cd /home/student/Dokumenty/git/proj-1
echo '#!/usr/bin/env python3' > app.py
echo 'Przykładowa aplikacja' > README.md
ls -al
# tworzenie repozytorium GIT
git init
git config user.name "Twoje Nazwisko i Imię"
git config user.email "twoj@email.local"
git config --list
# to samo co wyżej: cat .git/config
git status
# przygotuj pliki do wysyłki (Commit) na Repo
git add README.md
git add app.py
# to samo co wyżej (dodaj WSZYSTKO): git add *
git status
# opisanie zawartości Commitu (poprzednich poleceń git add)
git commit -m "Repo init with Readme"
git status
# ustawienie i nazwanie głównej gałezi
git branch -M main
# wskazanie adresu URL lokalnego Repo
git remote add local /home/gp/Dokumenty/git/proj-1/
# wysłanie/zatwierdzenie pierwszego Commitu
git push -u local master
git status
Opis
#2 scenariusz - Commitowanie zmian (rozwoju) w kodzie programu
# środowisko Projektu:
cd /home/student/Dokumenty/git/proj-1
# pierwsze zmiany:
echo 'print("Moja Aplikacja")' >> app.py
echo 'Lista funkcjonalności:' >> README.md
echo '* wyświetl powitanie' >> README.md
git status
# przygotuj pliki do wysyłki (Commit) na Repo
git add *
git status
# opisanie zawartości Commitu (poprzednich poleceń git add)
git commit -m "[add] 0.1 Print message"
git status
# wysłanie/zatwierdzenie kolejnego Commitu
git push -u local master
git status
# drugie zmiany
echo 'print("version: 0.2")' >> app.py
echo '* wyświetl wersję' >> README.md
echo '* dodać nagłówek Copyright z autorem' >> TODO.txt
git status
git add *
git status
# NIEchcemy pliku TODO.txt w Repo
git restore --staged TODO.txt
git status
# opisanie zawartości Commitu (poprzednich poleceń git add)
git commit -m "[mod] 0.2 Print version"
git status
# plik TODO.txt MA BYĆ nieśledzony
# wysłanie/zatwierdzenie kolejnego Commitu
git push -u local master
git status
Opis
#3 scenariusz - kontrola Repo: lista gałęzi oraz "wersji" Commitów
# środowisko Projektu:
cd /home/student/Dokumenty/git/proj-1
# aktualna gałąź prac
git branch
# lista wszystkich gałęzi Repo
git branch -a
# historia pełna LUB kompaktowa (1-linijkowa)
git log
git log --pretty=oneline
Opis
#4 scenariusz - lista ignorowanych (dla Commitów) plików i katalogów
# środowisko Projektu:
cd /home/student/Dokumenty/git/proj-1
mkdir ./DOCS
echo "opisy funkcji" > ./DOCS/opisy.txt
mv TODO.txt ./DOCS
echo 'print("Prawdziwy kod programu")' >> app.py
git status
# dodanie ignorowania plików i/lub katalogów
# TYLKO dla lokalnego REPO
cat .git/info/exclude
echo 'DOCS/*' >> .git/info/exclude
git status
# dla każdego, kto sklonuje TO Repo (ustawienia ignorowania będą synchronizowane)
echo 'DOCS/*' >> .gitignore
git status
echo '.gitignore' >> .gitignore
git status
# wyjątek dla ignorowanego katalogu, bo wskazany jego plik jednak nie był ignorowany
echo '!DOCS/opis.txt' >> .git/info/exclude
git status
# zatwierdzanie zmian
git add *
git commit -m "[mod] 0.3 Code and Documenation"
git status
git push -u local master
git status
git log
Opis
#5 scenariusz - przywracanie konkretnych wersji projektu
# środowisko Projektu:
cd /home/student/Dokumenty/git/proj-1
# lista Commitów
git log
# UWAGA! przechowaj listę HASHy Commitów w innym miejscu niż Repo
# pokaż różnicę pomiędzy Commitem B i jego porzednikiem
git show [NUMER_HASH_COMMITU]
# załaduj stan projektu z konkretnego Commita
git checkout [NUMER_HASH_COMMITU]
# powróć do najnowszej wersji projektu
git log
# brak wskazania Najnowszego commitu
cat .git/logs/HEAD
git log --all
# wyszukaj HASH najnowszej wersji projektu
git checkout [NUMER_HASH_COMMITU]