Kompletny przewodnik po procesie wypychania zmian na GitHub - od klonowania repozytorium po wysłanie zmian na serwer.
🔄 Wizualizacja procesu
Poniższy diagram pokazuje kompletny workflow od sklonowania repozytorium do wypchania zmian:
flowchart TD A([Start]) --> B["Otwórz VS Code / Cursor"] B --> C["Otwórz folder roboczy lokalnie<br/>np. my_project"] C --> D["Otwórz terminal i wpisz:<br/>git clone https://github.com/<br/>twoj-nick-github/twoja-nazwa-projektu"] D --> E{Klonowanie udane?} E -->|Nie| X([Przerwij i daj znać mentorowi]) E -->|Tak| F["Repo sklonowane lokalnie"] F --> G["Sprawdź: git branch<br/>oraz git status"] G --> H{Pracujesz nad<br/>nowym taskiem?} H -->|Tak| I["Utwórz gałąź:<br/>git checkout -b NAZWA_ZADANIA<br/>np. TASK-1-Kasjan"] H -->|Nie| J["Zostań na gałęzi main"] I --> K J --> K K["Dodaj lub zmień pliki"] --> L["git status<br/>pliki na czerwono"] L --> M["Dodaj do indeksu GitHub:<br/>git add ."] M --> N["git status<br/>pliki na zielono"] N --> O["Zatwierdź zmiany:<br/>git commit -m 'Opis zmian'"] O --> P{Czy to nowa gałąź?} P -->|Tak| Q["git push -u origin<br/>NAZWA_GAŁĘZI"] P -->|Nie| R["git push"] Q --> S([Sprawdź pliki na GitHub]) R --> S([Sprawdź pliki na GitHub])
flowchart TD
A([Start]) --> B["Otwórz VS Code / Cursor"]
B --> C["Otwórz folder roboczy lokalnie<br/>np. my_project"]
C --> D["Otwórz terminal i wpisz:<br/>git clone https://github.com/<br/>twoj-nick-github/twoja-nazwa-projektu"]
D --> E{Klonowanie udane?}
E -->|Nie| X([Przerwij i daj znać mentorowi])
E -->|Tak| F["Repo sklonowane lokalnie"]
F --> G["Sprawdź: git branch<br/>oraz git status"]
G --> H{Pracujesz nad<br/>nowym taskiem?}
H -->|Tak| I["Utwórz gałąź:<br/>git checkout -b NAZWA_ZADANIA<br/>np. TASK-1-Kasjan"]
H -->|Nie| J["Zostań na gałęzi main"]
I --> K
J --> K
K["Dodaj lub zmień pliki"] --> L["git status<br/>pliki na czerwono"]
L --> M["Dodaj do indeksu GitHub:<br/>git add ."]
M --> N["git status<br/>pliki na zielono"]
N --> O["Zatwierdź zmiany:<br/>git commit -m 'Opis zmian'"]
O --> P{Czy to nowa gałąź?}
P -->|Tak| Q["git push -u origin<br/>NAZWA_GAŁĘZI"]
P -->|Nie| R["git push"]
Q --> S([Sprawdź pliki na GitHub])
R --> S([Sprawdź pliki na GitHub])
📝 Krok po kroku - wypychanie zmian
1. Przygotowanie środowiska
Zanim zaczniesz pracować z repozytorium, upewnij się że:
# Sprawdź czy masz zainstalowany Gitgit--version# Skonfiguruj Git (tylko przy pierwszym użyciu)git config --global user.name "Twoje Imię Nazwisko"git config --global user.email "twoj-email@example.com"
2. Klonowanie repozytorium
# Sklonuj repozytorium z GitHubgit clone https://github.com/twoj-nick-github/twoja-nazwa-projektu.git# Przejdź do folderu projektucd twoja-nazwa-projektu# Sprawdź status i dostępne gałęziegit statusgit branch -a
3. Praca z gałęziami
Dla nowych zadań - utwórz nową gałąź:
# Utwórz i przełącz się na nową gałąźgit checkout -b TASK-1-NazwaZadania# Sprawdź aktualną gałąźgit branch
Dla istniejącego kodu - zostań na main:
# Upewnij się że jesteś na maingit checkout main# Pobierz najnowsze zmianygit pull origin main
🔥 Ważne!
Przystępując do pracy z kodem - zawsze pobierz najnowsze zmiany z repo
4. Wprowadzanie zmian
Po wprowadzeniu zmian w plikach:
# Sprawdź które pliki zostały zmienione (czerwone = nieindeksowane)git status# Dodaj wszystkie zmiany do indeksugit add .# Sprawdź ponownie (zielone = gotowe do commit)git status# Alternatywnie - dodaj konkretne plikigit add nazwa-pliku.txt folder/inny-plik.py
5. Zatwierdzanie zmian (commit)
# Zatwierdź zmiany z opisemgit commit -m"Dodano funkcję logowania użytkownika"# Sprawdź historię commitówgit log --oneline
💡 Dobre praktyki dla wiadomości commit:
Do członków zespołu - pisz w trybie rozkazującym: “Dodaj”, “Napraw”, “Zaktualizuj”
Bądź konkretny: zamiast “poprawki” napisz “Napraw błąd walidacji email”
Ogranicz do 50 znaków w pierwszej linii
Niech każdy opis commita będzie powiązany z faktyczną zmianą w kodzie
6. Wypychanie na GitHub
Dla nowej gałęzi:
# Wypchnij nową gałąź (z flagą -u dla upstream)git push -u origin NAZWA_GALEZI# Przykładgit push -u origin TASK-1-LoginFunction
Dla istniejącej gałęzi:
# Wypchnij zmianygit push# Lub explicitegit push origin main
7. Weryfikacja na GitHub
Po wykonaniu git push:
Otwórz repozytorium na GitHub.com
Sprawdź czy pliki zostały zaktualizowane
Dla nowej gałęzi: GitHub pokaże opcję “Compare & pull request”
Utwórz Pull Request jeśli pracujesz w zespole
⚠️ Najczęstsze problemy i rozwiązania
Problem: “Permission denied (publickey)”
# Sprawdź czy masz skonfigurowany SSH keyssh-T git@github.com# Lub użyj HTTPS zamiast SSHgit remote set-url origin https://github.com/username/repo.git
Problem: “Your branch is behind”
# Pobierz najnowsze zmianygit pull origin main# Rozwiąż konflikty jeśli wystąpią# Następnie wykonaj commit i push
Problem: Przypadkowy commit na main zamiast na feature branch
git st # zamiast git statusgit co main # zamiast git checkout maingit cm "Fix"# zamiast git commit -m "Fix"
📚 Następne kroki
Po opanowaniu podstawowego workflow, warto nauczyć się:
Pull Requests - proces review kodu w zespole
Merge vs Rebase - różne strategie łączenia gałęzi
Git Flow - zaawansowany model pracy z gałęziami
GitHub Actions - automatyzacja CI/CD
💡 Protip: Zawsze sprawdź git status przed wykonaniem jakiejkolwiek operacji Git. To pomoże Ci uniknąć niespodzianek!
Source Code
---title: "GitHub Workflow - Wypychanie zmian"format: html: toc: true code-copy: true include-in-header: - text: | <style> .cell[data-layout-align="default"] .sourceCode.cell-code[id="cb1"] { display: none !important; } </style>---Kompletny przewodnik po procesie wypychania zmian na GitHub - od klonowania repozytorium po wysłanie zmian na serwer.## 🔄 Wizualizacja procesuPoniższy diagram pokazuje kompletny workflow od sklonowania repozytorium do wypchania zmian:```{mermaid}flowchart TD A([Start]) --> B["Otwórz VS Code / Cursor"] B --> C["Otwórz folder roboczy lokalnie<br/>np. my_project"] C --> D["Otwórz terminal i wpisz:<br/>git clone https://github.com/<br/>twoj-nick-github/twoja-nazwa-projektu"] D --> E{Klonowanie udane?} E -->|Nie| X([Przerwij i daj znać mentorowi]) E -->|Tak| F["Repo sklonowane lokalnie"] F --> G["Sprawdź: git branch<br/>oraz git status"] G --> H{Pracujesz nad<br/>nowym taskiem?} H -->|Tak| I["Utwórz gałąź:<br/>git checkout -b NAZWA_ZADANIA<br/>np. TASK-1-Kasjan"] H -->|Nie| J["Zostań na gałęzi main"] I --> K J --> K K["Dodaj lub zmień pliki"] --> L["git status<br/>pliki na czerwono"] L --> M["Dodaj do indeksu GitHub:<br/>git add ."] M --> N["git status<br/>pliki na zielono"] N --> O["Zatwierdź zmiany:<br/>git commit -m 'Opis zmian'"] O --> P{Czy to nowa gałąź?} P -->|Tak| Q["git push -u origin<br/>NAZWA_GAŁĘZI"] P -->|Nie| R["git push"] Q --> S([Sprawdź pliki na GitHub]) R --> S([Sprawdź pliki na GitHub])```## 📝 Krok po kroku - wypychanie zmian### 1. Przygotowanie środowiskaZanim zaczniesz pracować z repozytorium, upewnij się że:```bash# Sprawdź czy masz zainstalowany Gitgit--version# Skonfiguruj Git (tylko przy pierwszym użyciu)git config --global user.name "Twoje Imię Nazwisko"git config --global user.email "twoj-email@example.com"```### 2. Klonowanie repozytorium```bash# Sklonuj repozytorium z GitHubgit clone https://github.com/twoj-nick-github/twoja-nazwa-projektu.git# Przejdź do folderu projektucd twoja-nazwa-projektu# Sprawdź status i dostępne gałęziegit statusgit branch -a```### 3. Praca z gałęziami#### Dla nowych zadań - utwórz nową gałąź:```bash# Utwórz i przełącz się na nową gałąźgit checkout -b TASK-1-NazwaZadania# Sprawdź aktualną gałąźgit branch```#### Dla istniejącego kodu - zostań na main:```bash# Upewnij się że jesteś na maingit checkout main# Pobierz najnowsze zmianygit pull origin main```**🔥 Ważne!**- Przystępując do pracy z kodem - **zawsze pobierz najnowsze zmiany z repo**### 4. Wprowadzanie zmianPo wprowadzeniu zmian w plikach:```bash# Sprawdź które pliki zostały zmienione (czerwone = nieindeksowane)git status# Dodaj wszystkie zmiany do indeksugit add .# Sprawdź ponownie (zielone = gotowe do commit)git status# Alternatywnie - dodaj konkretne plikigit add nazwa-pliku.txt folder/inny-plik.py```### 5. Zatwierdzanie zmian (commit)```bash# Zatwierdź zmiany z opisemgit commit -m"Dodano funkcję logowania użytkownika"# Sprawdź historię commitówgit log --oneline```**💡 Dobre praktyki dla wiadomości commit:**- Do członków zespołu - pisz w trybie rozkazującym: "Dodaj", "Napraw", "Zaktualizuj"- Bądź konkretny: zamiast "poprawki" napisz "Napraw błąd walidacji email"- Ogranicz do 50 znaków w pierwszej linii- Niech każdy opis commita będzie powiązany z faktyczną zmianą w kodzie### 6. Wypychanie na GitHub#### Dla nowej gałęzi:```bash# Wypchnij nową gałąź (z flagą -u dla upstream)git push -u origin NAZWA_GALEZI# Przykładgit push -u origin TASK-1-LoginFunction```#### Dla istniejącej gałęzi:```bash# Wypchnij zmianygit push# Lub explicitegit push origin main```### 7. Weryfikacja na GitHubPo wykonaniu `git push`:1. **Otwórz repozytorium na GitHub.com**2. **Sprawdź czy pliki zostały zaktualizowane**3. **Dla nowej gałęzi:** GitHub pokaże opcję "Compare & pull request"4. **Utwórz Pull Request** jeśli pracujesz w zespole## ⚠️ Najczęstsze problemy i rozwiązania### Problem: "Permission denied (publickey)"```bash# Sprawdź czy masz skonfigurowany SSH keyssh-T git@github.com# Lub użyj HTTPS zamiast SSHgit remote set-url origin https://github.com/username/repo.git```### Problem: "Your branch is behind"```bash# Pobierz najnowsze zmianygit pull origin main# Rozwiąż konflikty jeśli wystąpią# Następnie wykonaj commit i push```### Problem: Przypadkowy commit na main zamiast na feature branch```bash# Cofnij ostatni commit (zachowaj zmiany)git reset --soft HEAD~1# Utwórz nową gałąźgit checkout -b proper-feature-branch# Wykonaj commit ponowniegit commit -m"Proper commit message"```## 🚀 Skróty i aliasyDodaj te aliasy do `~/.gitconfig` dla szybszej pracy:```bash[alias]st = statusco = checkoutbr = branchcm = commit -mps = pushpl = pulllg = log --oneline--graph--decorate--all```Użycie:```bashgit st # zamiast git statusgit co main # zamiast git checkout maingit cm "Fix"# zamiast git commit -m "Fix"```## 📚 Następne krokiPo opanowaniu podstawowego workflow, warto nauczyć się:- **Pull Requests** - proces review kodu w zespole- **Merge vs Rebase** - różne strategie łączenia gałęzi- **Git Flow** - zaawansowany model pracy z gałęziami- **GitHub Actions** - automatyzacja CI/CD---*💡 **Protip:** Zawsze sprawdź `git status` przed wykonaniem jakiejkolwiek operacji Git. To pomoże Ci uniknąć niespodzianek!*