Laboratorium: System kontroli wersji Git i platforma GitHub
Prowadzący: mgr inż. Igor Brzeżek
Dla: Studentów II roku Informatyki
Cel: Praktyczne opanowanie najpopularniejszego systemu kontroli wersji na świecie.
Zadanie 1
Zakładanie konta na platformie GitHub
Cel: Utworzenie profesjonalnego profilu na platformie GitHub, który stanie się
wizytówką programisty w środowisku IT.
Czego się nauczysz: Rejestracji w serwisie, wdrażania podstawowych mechanizmów
bezpieczeństwa (2FA)
oraz znaczenia profesjonalnej nazwy użytkownika w branży technologicznej.
Scenariusz: Wchodzisz w świat otwartoźródłowego oprogramowania (Open Source).
Twoim pierwszym krokiem jest
stworzenie profesjonalnej tożsamości cyfrowej. Wyobraź sobie, że nazywasz się Jan Nowak (na potrzeby
ćwiczenia użyjemy adresu
jnowak@gmail.com). Twoim celem jest założenie konta, które będziesz mógł dumnie prezentować w CV.
Nie traktuj tego jak zwykłego konta społecznościowego – to Twoje inżynierskie portfolio.
Instrukcja wykonania:
- Otwórz przeglądarkę internetową i przejdź na stronę github.com.
- W prawym górnym rogu kliknij przycisk Sign up (Zarejestruj się).
- W polu "Enter your email" wpisz swój adres e-mail (w naszym ćwiczeniu:
jnowak@gmail.com- Ty użyj swojego prawdziwego adresu) i kliknij Continue. - Stwórz silne hasło (minimum 15 znaków lub przynajmniej 8 znaków zawierających cyfrę i małą literę). Pamiętaj, to bezpieczny schowek na Twój kod!
- Zdefiniuj unikalną nazwę użytkownika (username). Wskazówka: Unikaj nieprofesjonalnych nazw
typu "killer123".
Zdecydowanie lepiej użyć kombinacji imienia i nazwiska, np.
jnowak_dev. - Rozwiąż prostą zagadkę weryfikacyjną (sprawdzenie, że nie jesteś botem).
- Po zakończeniu rejestracji GitHub wyśle Ci e-mail weryfikacyjny. Kliknij w link w tym e-mailu, aby aktywować konto.
Uwaga: Jeśli nie widzisz e-maila, sprawdź folder SPAM lub ponownie wyślij kod weryfikacyjny z ustawień konta (Settings → Emails → Resend verification email).
- Po zalogowaniu, w prawym górnym rogu kliknij swój awatar i wybierz Settings (Ustawienia) → Public profile (Profil publiczny). Uzupełnij pole "Bio" (np. "Student Informatyki pasjonujący się językami C i Python"). To jedna z pierwszych rzeczy, na które zwracają uwagę rekruterzy!
- Zalecane: Włącz dwuskładnikowe uwierzytelnianie (2FA) w Settings → Password and authentication dla dodatkowego bezpieczeństwa.
Zadanie 2
Interfejs GitHub i instalacja Git CLI
Cel: Zrozumienie kluczowych elementów interfejsu GitHub oraz przygotowanie
lokalnego środowiska pracy
(Windows/Linux) do obsługi systemu Git z poziomu terminala.
Czego się nauczysz: Rozróżniania repozytorium od projektu, instalacji narzędzi
linii poleceń (CLI), konfiguracji tożsamości w systemie Git (user.email, user.name).
Scenariusz: Posiadasz już konto, ale GitHub to nie tylko strona WWW. Prawdziwa
efektywność
tkwi w wierszu poleceń. Musisz zainstalować "silnik" systemu kontroli wersji Git na swoim komputerze. Przy
okazji dowiesz się,
czym różnią się "Repositories" (repozytoria – miejsca przechowywania kodu) od "Projects" (projekty – tablice
Kanban do zarządzania zadaniami).
Następnie "przedstawisz się" Gitowi, aby każda Twoja zmiana była poprawnie podpisana Twoimi danymi.
Instrukcja wykonania:
- Zaloguj się na GitHub i kliknij ikonę "+" w górnym pasku. Zauważ różnicę między: New repository (nowe repozytorium kodu – to nas interesuje) a New project (nowy projekt – narzędzie do planowania prac, podobne do Trello). Zapamiętaj to rozróżnienie.
- Instalacja w systemie Windows: Pobierz instalator ze strony git-scm.com. Przejdź przez proces instalacji z domyślnymi ustawieniami. W kroku dotyczącym domyślnego edytora możesz zmienić Vim na Notepad++, VS Code lub inny preferowany program.
- Instalacja w systemie Linux (Debian/Ubuntu): Otwórz terminal i wykonaj polecenia:
sudo apt-get update && sudo apt-get install git. - Instalacja w systemie macOS: Jeśli masz zainstalowany Homebrew, użyj:
brew install git. W przeciwnym razie Git jest domyślnie zainstalowany. - Uruchom terminal (w Windows: Menu Start → wpisz "Git Bash" lub "CMD", w Linux/macOS: dowolny terminal).
- Zweryfikuj poprawność instalacji, sprawdzając wersję programu:
$ git --version git version 2.43.0
- Skonfiguruj swoją globalną tożsamość (dane te będą dołączane do każdego zatwierdzenia zmian – tzw. commita):
# Konfiguracja nazwy użytkownika (Imię i Nazwisko) $ git config --global user.name "Jan Nowak" # Konfiguracja adresu e-mail (musi być identyczny z tym na GitHubie!) $ git config --global user.email "jnowak@gmail.com" # Weryfikacja bieżącej konfiguracji $ git config --list user.name=Jan Nowak user.email=jnowak@gmail.com ...
Zadanie 3
Publikacja projektu "acopy" przez interfejs WWW
Cel: Utworzenie pierwszego repozytorium i wgranie plików projektu w języku C z
wykorzystaniem
wyłącznie przeglądarki internetowej.
Czego się nauczysz: Tworzenia repozytorium, dodawania pliku dokumentacji
(README.md),
wyboru odpowiedniej licencji oraz zrozumienia podstawowej struktury plików w repozytorium.
Scenariusz: W folderze
d:\dane\acopy przechowujesz swój projekt
napisany w C – program do kopiowania plików. Składa się on z plików źródłowych .c oraz
nagłówkowych .h.
Chcesz udostępnić go publicznie, ale na razie wolisz uniknąć korzystania z konsoli. Wykonasz to za pomocą
interfejsu graficznego GitHub.
Pamiętaj, że profesjonalny projekt powinien zawierać plik README.md (instrukcję/opis) oraz
licencję określającą zasady korzystania z kodu.
Instrukcja wykonania:
- Na stronie głównej GitHub kliknij zielony przycisk New (Nowe) lub "Create repository".
- W polu Repository name wprowadź:
acopy. - W polu Description wpisz: "Prosty program do kopiowania plików napisany w standardzie ANSI C".
- Wybierz widoczność: Public (publiczne – każdy może zobaczyć kod) lub Private (prywatne). Na potrzeby ćwiczenia wybierz Public.
- Zaznacz opcję Add a README file. Spowoduje to utworzenie startowego pliku opisu.
- W sekcji Choose a license wybierz np. MIT License (jedna z najpopularniejszych otwartoźródłowych licencji).
- Zatwierdź klikając Create repository.
- Jesteś teraz na stronie swojego repozytorium. Kliknij przycisk Add file → Upload files.
- Przeciągnij pliki z katalogu
d:\dane\acopy(źródła .c, nagłówki .h) bezpośrednio w obszar na stronie. - W polu "Commit changes" (Zatwierdź zmiany) wpisz krótki opis: "Dodanie kodów źródłowych projektu".
- Kliknij zielony przycisk Commit changes. Twoje pliki zostały bezpiecznie umieszczone w chmurze!
Zadanie 4
Obsługa wiersza poleceń: Inicjalizacja projektu "csvmover"
Cel: Przesłanie projektu Python z dysku lokalnego na platformę GitHub z
wykorzystaniem wyłącznie
terminala (Git Bash / CMD).
Czego się nauczysz: Inicjalizacji repozytorium (git init), podłączania zdalnego
repozytorium (git remote), rejestrowania plików w obszarze przejściowym (git add), zatwierdzania zmian (git
commit) i ich wysyłania (git push).
Scenariusz: Jako profesjonalny programista pracujesz nad projektem w
d:\dane\csvmover
(skrypty w języku Python). Przy rozbudowanych projektach obsługa przez przeglądarkę staje się nieefektywna,
dlatego skorzystamy z konsoli.
Najpierw utworzysz puste repozytorium na stronie GitHub, a następnie "wypchniesz" do niego swój lokalny kod.
Jest to standardowy model pracy w branży IT.
Instrukcja wykonania:
- Na GitHubie utwórz nowe repozytorium o nazwie
csvmover. WAŻNE: tym razem nie zaznaczaj opcji "Add a README" ani nie wybieraj licencji. Potrzebujemy całkowicie pustego repozytorium. - Po utworzeniu zobaczysz stronę z instrukcją. Skopiuj widoczny tam adres HTTPS, np.:
https://github.com/JanNowak/csvmover.git. - Otwórz terminal i przejdź do katalogu projektu:
$ cd ~/dane/csvmover
- Zainicjuj system Git w katalogu, zarejestruj pliki, wykonaj pierwszy commit i wyślij zmiany na serwer:
# 1. Inicjalizacja lokalnego repozytorium w bieżącym katalogu $ git init Initialized empty Git repository in ~/dane/csvmover/.git/ # 2. Dodanie wszystkich plików do obszaru przejściowego (stage) $ git add . # 3. Zatwierdzenie zmian (utworzenie "migawki" wersji 0.0.1) $ git commit -m "Inicjalizacja projektu v0.0.1 - bazowe skrypty" [master (root-commit) a1b2c3d] Inicjalizacja projektu v0.0.1 - bazowe skrypty 3 files changed, 150 insertions(+) # 4. Zmiana nazwy domyślnej gałęzi na 'main' (aktualny standard GitHub) $ git branch -M main # 5. Podłączenie adresu zdalnego repozytorium $ git remote add origin https://github.com/JanNowak/csvmover.git # 6. Wypchnięcie zmian do zdalnego repozytorium $ git push -u origin main Enumerating objects: 5, done. ... To https://github.com/JanNowak/csvmover.git * [new branch] main -> main
Zadanie 5
Modyfikacja kodu, wersjonowanie i etykiety (Tagi)
Cel: Wprowadzenie zmian w kodzie, aktualizacja repozytorium oraz stosowanie
profesjonalnego znakowania wersji za pomocą tagów.
Czego się nauczysz: Standardowego cyklu pracy: edycja → add → commit → push. Wykorzystania
polecenia
git tag do oznaczania konkretnych wydali (tzw. release) oraz zrozumienia różnicy
między zwykłym zatwierdzeniem (commit) a etykietą (tag).
Scenariusz: Twój projekt
csvmover rozwija się. Wprowadziłeś nową
funkcjonalność w pliku main.py (np. obsługę wyjątków). To istotny krok, który chcesz oznaczyć jako wersja 0.0.2.
Musisz zaktualizować kod na GitHubie oraz trwale oznaczyć etykietą "v0.0.2". Dzięki temu użytkownicy będą mogli łatwo
pobrać tę konkretną, stabilną wersję, zamiast korzystać z najnowszego, potencjalnie niestabilnego kodu.
Instrukcja wykonania:
- Otwórz plik
main.pyw edytorze kodu, dopisz komentarz lub zmień fragment logiki i zapisz plik. - W terminalu sprawdź status zmian:
$ git status On branch main Changes not staged for commit: modified: main.py
- Zatwierdź zmiany i wyślij je do zdalnego repozytorium:
$ git add main.py $ git commit -m "Poprawki błędów i aktualizacja do wersji 0.0.2" $ git push
- Teraz dodaj etykietę (Tag) wersji:
# Utworzenie tag v0.0.2 (etykieta z opisem) $ git tag -a v0.0.2 -m "Wydanie wersji stabilnej 0.0.2" # Wysłanie tagów na serwer (ważne: git push domyślnie nie wysyła tagów!) $ git push origin v0.0.2 To https://github.com/JanNowak/csvmover.git * [new tag] v0.0.2 -> v0.0.2
- Przejdź na stronę projektu na GitHubie do zakładki Releases lub Tags. Zobaczysz tam swoją wersję v0.0.2 dostępną do pobrania jako archiwum ZIP lub TAR.GZ.
Zadanie 6
Praca na gałęziach (Branches) – bezpieczne eksperymentowanie
Cel: Nauka izolowania prac nad nowymi funkcjami, co pozwala na rozwijanie
projektu bez ryzyka uszkodzenia głównej, stabilnej linii kodu.
Czego się nauczysz: Tworzenia nowej gałęzi (branch), przełączania się między
kontekstami pracy (checkout/switch) oraz scalania zmian z powrotem do głównej gałęzi (merge).
Scenariusz: Planujesz dodać eksperymentalną funkcję "turbo-speed" do projektu
csvmover, ale obawiasz się, że zmiany mogą zdestabilizować działający program. Rozwiązanie: stwórz boczną gałąź
o nazwie eksperyment. Jeśli funkcja zadziała poprawnie – scalasz ją z gałęzią główną (main).
Jeśli okaże się porażką – po prostu ją usuwasz, a main pozostaje nienaruszony.
Instrukcja wykonania:
- Sprawdź, na której gałęzi aktualnie się znajdujesz:
$ git branch * main
- Utwórz nową gałąź i przełącz się na nią. Dostępne są dwie metody:
# Metoda 1: checkout (tradycyjna, starsza składnia) $ git checkout -b eksperyment Switched to a new branch 'eksperyment'# Metoda 2: switch (nowsza, bardziej intuicyjna składnia - REKOMENDOWANA) $ git switch -c eksperyment Switched to a new branch 'eksperyment'
- Stwórz nowy plik
turbo.py. Dodaj go i wykonaj zatwierdzenie (commit).$ git add turbo.py $ git commit -m "Dodanie eksperymentalnego modułu turbo" - Wróć na gałąź główną. Zauważ, że plik
turbo.py"zniknie" z katalogu na dysku (ponieważ istnieje tylko w gałęzi eksperymentalnej):$ git checkout main # lub używając nowszej składni: $ git switch main - Uznajemy, że eksperyment jest udany. Scal (merge) zmiany z gałęzi
eksperymentdomain:$ git merge eksperyment Updating a1b2c..d4e5f Fast-forward turbo.py | 1 + 1 file changed, 1 insertion(+) - Wyślij zaktualizowaną gałąź główną do zdalnego repozytorium:
$ git push
Zadanie 7
GitHub Pages – hostowanie Twojej strony wizytówki
Cel: Uruchomienie bezpłatnego hostingu statycznej strony internetowej
bezpośrednio z plików Twojego repozytorium.
Czego się nauczysz: Konfiguracji usługi GitHub Pages oraz publikacji plików
statycznych (HTML/CSS/obrazy).
Scenariusz: W projekcie
acopy posiadasz dokumentację w pliku
art.html oraz powiązane obrazy. Chcesz, aby pod publicznym adresem WWW (np. jannowak.github.io/acopy)
każdy mógł zapoznać się z dokumentacją w formie wyrenderowanej strony, a nie jedynie przeglądać kod źródłowy plików.
Instrukcja wykonania:
- Otwórz repozytorium
acopyna platformie GitHub. - Upewnij się, że posiadasz tam plik tekstowy o nazwie
index.html. Jeśli Twój plik nazywa się inaczej (np.art.html), zmień jego nazwę naindex.html(GitHub domyślnie szuka tego pliku jako strony startowej). - Przejdź do zakładki Settings (Ustawienia – ikona koła zębatego w górnym menu).
- W menu po lewej stronie wybierz sekcję Pages (znajduje się w sekcji "Code and automation").
- W części "Build and deployment" pod nagłówkiem "Source" masz dwie opcje:
- Deploy from a branch – publikacja z wybranej gałęzi (prostsza, polecana dla początkujących)
- GitHub Actions – publikacja za pomocą automatycznego workflow (bardziej zaawansowana)
- Dla opcji "Deploy from a branch":
- W polu "Branch" wybierz gałąź main oraz folder /(root).
- Kliknij Save.
- Odczekaj około 1-2 minut, a następnie odśwież stronę. Zobaczysz komunikat: "Your site is live at..." wraz z wygenerowanym linkiem.
- Kliknij wygenerowany link. Twoja profesjonalna dokumentacja jest już dostępna dla całego świata!
Ważne: Adres strony będzie miał format:
twojusername.github.io/nazwa-repozytorium. Jeśli chcesz, aby strona była dostępna podtwojusername.github.io, nazwij repozytorium dokładnietwojusername.github.io(tworząc tzw. user site).
Zadanie 8
Zarządzanie repozytorium: Zmiana nazwy i usuwanie projektów
Cel: Poznanie czynności administracyjnych: jak zmienić nazwę projektu oraz jak bezpiecznie go usunąć.
Czego się nauczysz: Zmiany nazwy repozytorium (oraz zrozumienia konsekwencji dla zdalnych adresów URL),
archiwizacji oraz trwałego usuwania projektów.
Scenariusz: Nazwa
csvmover przestała Ci odpowiadać – postanawiasz zmienić ją na bardziej profesjonalną: PyDataMover.
Z kolei projekt acopy uznajesz za zakończony test i chcesz go skasować, aby zachować porządek na swoim profilu.
Pamiętaj: operacja usunięcia jest nieodwracalna!
Instrukcja wykonania:
- Zmiana nazwy: Otwórz repozytorium
csvmoveri przejdź do Settings. Na samej górze, w polu "Repository name", wprowadźPyDataMoveri kliknij Rename.
Uwaga: Od tego momentu adres URL repozytorium uległ zmianie. Choć GitHub oferuje automatyczne przekierowania, dobrą praktyką jest zaktualizowanie adresu w lokalnej konfiguracji:$ git remote set-url origin https://github.com/JanNowak/PyDataMover.git - Usuwanie repozytorium: Otwórz repozytorium
acopyi przejdź do Settings. Zjedź na sam dół do sekcji oznaczonej jako Danger Zone (Strefa niebezpieczeństwa). - Kliknij przycisk Delete this repository.
- GitHub ze względów bezpieczeństwa poprosi Cię o ręczne przepisanie pełnej nazwy repozytorium (np.
JanNowak/acopy). Dopiero po tym potwierdzeniu projekt zostanie bezpowrotnie usunięty.OSTRZEŻENIE: Usunięcie repozytorium jest trwałe i nie można cofnąć tej operacji. Przed usunięciem upewnij się, że masz lokalną kopię wszystkich potrzebnych plików.
Zadanie 9
Social Coding: Śledzenie projektów i Forkowanie
Cel: Zrozumienie społecznościowego aspektu platformy GitHub: śledzenie twórców,
docenianie ich pracy (gwiazdki) oraz kopiowanie projektów (Fork).
Czego się nauczysz: Mechanizmu forkowania (tworzenia własnej kopii czyjegoś projektu),
korzystania z opcji Watch/Star oraz wyszukiwania użytkowników.
Scenariusz: Chcesz stać się aktywnym członkiem społeczności. Znajdź profil użytkownika
igorbrzezek. Spodobało Ci się jedno z jego repozytoriów. Twoim celem jest pobranie tego projektu na swoje konto (tzw. Fork),
aby móc go dowolnie modyfikować bez wpływu na oryginał.
Instrukcja wykonania:
- W pasku wyszukiwania na górze strony wpisz
igorbrzezeki przejdź do profilu autora. - Kliknij przycisk Follow (Obserwuj), aby śledzić publiczną aktywność tej osoby.
- Otwórz dowolne publiczne repozytorium tego użytkownika.
- Zwróć uwagę na trzy przyciski w prawym górnym rogu strony repozytorium:
- Watch (Obserwuj): Kliknij, jeśli chcesz otrzymywać powiadomienia o nowych zmianach w tym projekcie.
- Star (Gwiazdka): To odpowiednik "polubienia". Gwiazdki budują renomę projektu i jego autora.
- Fork (Rozwidlenie): To kluczowa funkcja. Kliknięcie Fork utworzy identyczną KOPIĘ projektu na
TWOIM koncie (jako
JanNowak/nazwa-projektu). Od tej pory posiadasz pełne prawa do tej kopii i możesz w niej swobodnie eksperymentować.
- Po sforkowaniu możesz clone'ować to repozytorium na swój komputer i wprowadzać własne zmiany.
- Jeśli chcesz, aby Twoje zmiany zostały włączone do oryginalnego projektu, możesz utworzyć Pull Request.
Zadanie 10
Dobry nawyk – ignorowanie zbędnych plików (.gitignore)
Cel: Skonfigurowanie systemu Git w taki sposób, aby automatycznie pomijał pliki tymczasowe,
binarne i inne zbędne elementy (np. skompilowane pliki .exe, biblioteki, cache).
Czego się nauczysz: Tworzenia i edycji pliku
.gitignore oraz zrozumienia znaczenia
utrzymywania "czystego" repozytorium (przechowujemy kod źródłowy, nie pliki wynikowe).
Scenariusz: Podczas pracy z Pythonem automatycznie generowany jest katalog
__pycache__.
W przypadku języka C powstają pliki .exe lub .o. Nie chcemy ich przesyłać na GitHub, ponieważ zajmują miejsce
i są specyficzne dla danego komputera. Repozytorium powinno być sterylne. Stworzysz plik-instrukcję, który wskaże Gitowi, jakie elementy ma ignorować.
Instrukcja wykonania:
- W głównym katalogu projektu
PyDataMoverutwórz plik tekstowy o nazwie.gitignore(pamiętaj o kropce na samym początku nazwy). - Otwórz go w dowolnym edytorze tekstowym i zdefiniuj reguły ignorowania:
# Ignoruj katalogi cache Pythona __pycache__/ *.pyc # Ignoruj pliki wykonywalne i biblioteki (Windows) *.exe *.dll *.obj *.o # Ignoruj pliki tymczasowe logów *.log # Ignoruj katalogi środowisk wirtualnych venv/ env/ .venv/
- Zapisz plik. Wykonaj
git status. Nawet jeśli w katalogu znajduje się plikprogram.exe, Git pominie go w sekcji "Untracked files". - Zatwierdź i wyślij plik konfiguracji:
$ git add .gitignore $ git commit -m "Dodanie definicji ignorowanych plików (.gitignore)" $ git push
- Wskazówka: Dla popularnych języków i frameworków możesz skorzystać z gotowych szablonów .gitignore na stronie github.com/github/gitignore.
Zadanie 11
Rozwiązywanie konfliktów edycji
Cel: Zrozumienie mechanizmu powstawania konfliktów, gdy dwie osoby (lub Ty sam w różnych miejscach)
zmodyfikują tę samą linię kodu jednocześnie.
Czego się nauczysz: Obsługi błędu "rejected push", wymuszania pobrania zmian serwerowych (git pull)
oraz ręcznego rozstrzygania różnic w plikach.
Scenariusz: To klasyczna sytuacja w pracy zespołowej. Zmodyfikowałeś plik lokalnie na swoim komputerze.
W tym samym czasie ktoś inny (lub Ty za pomocą edytora WWW) zmienił tę samą linię pliku na serwerze. Podczas próby wysłania (push) otrzymasz błąd.
Musisz nauczyć się, jak pogodzić te dwie wersje.
Instrukcja wykonania:
- Przejdź na stronę GitHub do swojego repozytorium
PyDataMover. - Zredaguj plik
main.pybezpośrednio przez stronę WWW (ikona ołówka). Zmień pierwszą linię na:# Wersja zmodyfikowana na SERWERZEi zatwierdź zmiany (Commit). - Teraz w lokalnym edytorze na komputerze otwórz ten sam plik
main.py. Zmień tę samą, pierwszą linię na:# Wersja zmodyfikowana LOKALNIE. Zapisz plik. - Spróbuj wysłać lokalną zmianę na serwer:
$ git add main.py $ git commit -m "Moja lokalna zmiana" $ git push ! [rejected] main -> main (fetch first) error: failed to push some refs to...
- Git informuje, że na serwerze istnieją nowsze zmiany, których nie masz u siebie. Musisz je najpierw pobrać:
$ git pull CONFLICT (content): Merge conflict in main.py Automatic merge failed; fix conflicts and then commit the result.
- Otwórz plik
main.pyw edytorze. Zobaczysz specjalne znaczniki konfliktu:<<<<<<< HEAD # Wersja zmodyfikowana LOKALNIE ======= # Wersja zmodyfikowana na SERWERZE >>>>>>> abc1234def...
- Usuń znaczniki (<<<, ====, >>>>) i wybierz tę wersję, która jest poprawna (lub połącz obie w logiczny sposób). Zapisz plik.
- Dokończ proces scalania (tzw. "merge commit"):
$ git add main.py $ git commit -m "Ręczne rozwiązanie konfliktu w pliku main.py" $ git push
- Git informuje, że na serwerze istnieją nowsze zmiany, których nie masz u siebie. Musisz je najpierw pobrać:
$ git pull CONFLICT (content): Merge conflict in main.py Automatic merge failed; fix conflicts and then commit the result.
- Otwórz plik
main.pyw edytorze. Zobaczysz specjalne znaczniki konfliktu:<<<<<<< HEAD # Wersja zmodyfikowana LOKALNIE ======= # Wersja zmodyfikowana na SERWERZE >>>>>>> abc1234def...
- Usuń znaczniki (<<<, ====, >>>>) i wybierz tę wersję, która jest poprawna (lub połącz obie w logiczny sposób). Zapisz plik.
- Dokończ proces scalania (tzw. "merge commit"):
$ git add main.py $ git commit -m "Ręczne rozwiązanie konfliktu w pliku main.py" $ git push
- Otwórz plik
main.pyw edytorze. Zobaczysz specjalne znaczniki konfliktu:<<<<<<< HEAD # Wersja zmodyfikowana LOKALNIE ======= # Wersja zmodyfikowana na SERWERZE >>>>>>> abc1234def...
- Usuń znaczniki (<<<, ====, >>>) i wybierz tę wersję, która jest poprawna (lub połącz obie w logiczny sposób). Zapisz plik.
- Dokończ proces scalania (tzw. "merge commit"):
$ git add main.py $ git commit -m "Ręczne rozwiązanie konfliktu w pliku main.py" $ git push
- Gratulacje! Właśnie rozwiązałeś swój pierwszy konflikt w systemie kontroli wersji.
Złote zasady i porady eksperta
Jako inżynier z wieloletnim doświadczeniem, dzielę się z Tobą kilkoma kluczowymi zasadami, które ułatwią Ci życie w każdym projekcie:
- Zatwierdzaj zmiany często i w małych porcjach: Unikaj tworzenia gigantycznych commitów typu "Zrobione zadanie na 5". Zamiast tego zatwierdzaj każdą nową, działającą funkcjonalność. Dzięki temu łatwiej będzie Ci wrócić do stabilnego punktu w razie błędu.
- Twórz zrozumiałe opisy zmian: Pisanie
Naprawiono walidację e-mailajest nieskończenie lepsze niżpoprawka,fixczyasdf. Sam sobie podziękujesz za tę rzetelność po kilku miesiącach. - Nigdy nie publikuj danych wrażliwych! Jeśli przypadkowo umieścisz hasło do bazy danych lub klucz API
w publicznym repozytorium, boty wykryją to w ciągu kilku sekund. Zawsze korzystaj z pliku
.gitignorei zmiennych środowiskowych. - Szanuj gałąź główną: Gałąź
main(lubmaster) powinna zawierać wyłącznie działający, stabilny kod. Wszystkie eksperymenty i nowe funkcje rozwijaj na bocznych gałęziach (np.feature/login-system). - Pobieraj zanim wyślesz: Rozpoczynaj pracę od polecenia
git pull. Dzięki temu zawsze będziesz pracować na najaktualniejszej wersji kodu swojego zespołu. - Czytaj komunikaty błędów: Git jest bardzo pomocny – jego komunikaty zazwyczaj zawierają bezpośrednią podpowiedź, jakiego polecenia należy użyć, aby rozwiązać dany problem. Nie panikuj, po prostu uważnie czytaj.
- Używaj gałęzi do pracy zespołowej: Przed rozpoczęciem większych zmian, utwórz osobną gałąź. Po zakończeniu pracy utwórz Pull Request – to standard w nowoczesnym软件开发ie (DevOps).
- Pisz kod zgodnie z konwencjami projektu: Przed przystąpieniem do pracy zapoznaj się z wymaganiami projektu (CONTRIBUTING.md) i stosuj do ustalonego stylu kodowania.