commit 9c0dc151bd7ef3751ad782523d2438a0137e490a Author: baiobelfer Date: Tue Sep 2 09:03:49 2025 +0200 init diff --git a/z1.txt b/z1.txt new file mode 100644 index 0000000..2dd62d7 --- /dev/null +++ b/z1.txt @@ -0,0 +1,249 @@ +Pewnie! Poniżej masz zwięzłe, „dla ucznia” instrukcje do tematu **2.2 Podstawy Gita – rejestrowanie zmian w repozytorium**. To jest gotowa ściąga + scenariusz ćwiczenia krok-po-kroku. + +# 2.2 Rejestrowanie zmian w Git + +## Cel + +Nauczysz się: + +* sprawdzać stan repozytorium, +* dodawać pliki do „poczekalni” (staging area), +* zatwierdzać (commitować) zmiany, +* ignorować niepotrzebne pliki, +* usuwać/zmieniać nazwy plików w projekcie pod kontrolą Gita, +* przeglądać różnice (diff) tego, co **poza** i **w** poczekalni. + +--- + +## Słowniczek (bardzo krótko) + +* **Śledzony (tracked)** – plik był w ostatnim commicie. Może być: niezmodyfikowany, zmodyfikowany, albo w poczekalni. +* **Nieśledzony (untracked)** – plik nowy dla Gita (nie był w ostatnim commicie). +* **Poczekalnia (staging area / index)** – lista zmian, które **wejdą do najbliższego commita**. +* **Commit** – zapisana migawka projektu z opisem. + +--- + +## Najważniejsze polecenia (z przykładami) + +### 1) Sprawdź status + +```bash +git status +``` + +* Pokazuje gałąź, pliki **nieśledzone**, **zmodyfikowane** i **w poczekalni**. + +### 2) Zacznij śledzić plik / dodaj do poczekalni + +```bash +git add README # pojedynczy plik +git add . # wszystko z bieżącego katalogu (ostrożnie) +``` + +### 3) Zobacz różnice + +* **Zmiany poza poczekalnią**: + +```bash +git diff +``` + +* **Zmiany w poczekalni (wejdą do commita)**: + +```bash +git diff --staged # to samo co: git diff --cached +``` + +### 4) Zatwierdź zmiany (commit) + +```bash +git commit # otworzy edytor do wpisania wiadomości +git commit -m "Krótki, rzeczowy opis zmiany" +``` + +### 5) Pomiń poczekalnię dla śledzonych plików + +> Działa **tylko** dla plików już śledzonych. + +```bash +git commit -a -m "Szybki commit bez ręcznego git add" +``` + +### 6) Cofnij dodanie do poczekalni / porzuć zmiany w pliku + +```bash +git reset HEAD # wyjmij plik z poczekalni (zostają zmiany na dysku) +git checkout -- # porzuć zmiany w pliku i przywróć wersję z HEAD +``` + +### 7) Ignoruj pliki – `.gitignore` + +Utwórz plik `.gitignore` w katalogu projektu: + +```gitignore +# przykłady: +*.o +*.a +*~ +/TODO +build/ +doc/*.txt +doc/**/*.txt +``` + +Zasady: + +* `#` – komentarz +* `*` – dowolny ciąg znaków, `?` – jeden znak, `[abc]` – zestaw znaków +* `/` na końcu – katalog +* `!wzorzec` – zanegowanie (wyjątek od reguły) + +### 8) Usuń plik z repo (i z dysku) + +```bash +git rm PROJECTS.md +git commit -m "Usuń PROJECTS.md" +``` + +* Jeśli plik był już w poczekalni po modyfikacji – użyj `git rm -f`. + +**Zostaw plik na dysku, ale przestań śledzić:** + +```bash +git rm --cached duzy.log +``` + +### 9) Zmień nazwę/przenieś plik + +```bash +git mv stara_nazwa nowa_nazwa +# równoważne ręcznie: +# mv stara_nazwa nowa_nazwa && git rm stara_nazwa && git add nowa_nazwa +``` + +--- + +## „Zwięzły status” – szybka legenda + +```bash +git status -s +``` + +Przykład: + +``` + M README # M po prawej: zmieniony w katalogu roboczym +M lib/simplegit.rb # M po lewej: zmiana jest w poczekalni +A lib/git.rb # A w poczekalni (nowy plik dodany) +?? LICENSE.txt # plik nieśledzony +``` + +Dwukolumnowo: **lewa** = poczekalnia, **prawa** = katalog roboczy. + +--- + +## Rekomendowany workflow (bezpieczny) + +1. **Sprawdź status**: `git status` +2. **Obejrzyj różnice**: `git diff` +3. **Dodaj do poczekalni** konkretne pliki: `git add ` +4. **Sprawdź co wejdzie**: `git diff --staged` +5. **Commit** z sensownym opisem: `git commit -m "…"` +6. **Powtórz** po kolejnych zmianach. + +> Uwaga: jeżeli edytowałeś plik **po** `git add`, dodaj go **ponownie** (`git add `), inaczej commit nie uwzględni ostatniej poprawki! + +--- + +## Najczęstsze błędy i szybkie naprawy + +* „Commit nic nie zawiera” → zapomniałeś `git add`. Dodaj i powtórz. +* „Plik w poczekalni i jednocześnie zmodyfikowany” → dodałeś go, a potem znów zmieniłeś. Użyj: + + * `git diff` (co jest **poza** poczekalnią), + * `git diff --staged` (co **wejdzie** do commita), + * i **ponownie** `git add `. +* „Przez pomyłkę dodałem śmieci” → dodaj do `.gitignore`, a plik wyjmij ze śledzenia: `git rm --cached `. + +--- + +## Mini-ćwiczenie (15–20 min) + +1. **Przygotuj repo** + +```bash +git init git-lesson +cd git-lesson +echo "Witaj Git!" > README.md +git add README.md +git commit -m "Inicjalny commit z README" +``` + +2. **Dodaj nowy plik i przećwicz statusy** + +```bash +echo "Zasady" > RULES.md +git status # zobaczysz ?? RULES.md +git add RULES.md +git status -s # powinno pokazać A RULES.md +git commit -m "Dodaj RULES.md" +``` + +3. **Modyfikacje + poczekalnia** + +```bash +echo "Linia A" >> README.md +git diff # zobaczysz różnice poza poczekalnią +git add README.md +git diff --staged # zobaczysz różnice, które wejdą do commita +git commit -m "Uzupełnij README o Linię A" +``` + +4. **Zmiany po dodaniu do poczekalni** + +```bash +echo "Linia B" >> README.md +git status # README pojawi się jednocześnie w staged i modified +git add README.md # dołóż najnowsze zmiany do poczekalni +git commit -m "Dodaj Linię B do README" +``` + +5. **.gitignore** + +```bash +echo "*.log" > .gitignore +echo "debug.log" > debug.log +git status # debug.log powinien być ignorowany +git add .gitignore +git commit -m "Dodaj regułę ignorowania *.log" +``` + +6. **Usuwanie i zmiana nazwy** + +```bash +git rm RULES.md +git commit -m "Usuń plik RULES.md" + +git mv README.md README +git commit -m "Zmień nazwę README.md -> README" +``` + +> Na koniec `git log --oneline` – sprawdź historię swoich commitów. + +--- + +## Krótka ściąga (do druku) + +* **Stan**: `git status` / `git status -s` +* **Różnice**: `git diff` (poza poczekalnią), `git diff --staged` (wejdą do commita) +* **Dodanie**: `git add ` / `git add .` +* **Commit**: `git commit -m "Opis"` / `git commit -a -m "Opis"` (tylko śledzone) +* **Wyjęcie z poczekalni**: `git reset HEAD ` +* **Porzucenie zmian w pliku**: `git checkout -- ` +* **Ignorowanie**: `.gitignore` +* **Usuwanie**: `git rm ` / `git rm --cached ` +* **Zmiana nazwy**: `git mv stara nowa` + +Chcesz, żebym przerobił to na jedną stronę A4 (PDF) dla uczniów z miejscem na odhaczenie kroków i mini-quiz na końcu? +