# Instrukcja pracy z Git i Gitea Ten dokument zawiera kompletną instrukcję pracy z systemem kontroli wersji Git oraz platformą Gitea dla studentów seminarium. Instrukcja jest zorganizowana od podstaw do bardziej zaawansowanych operacji. --- ## Spis treści 1. [Co to jest Git?](#1-co-to-jest-git) 2. [Instalacja Git](#2-instalacja-git) 3. [Pierwsze logowanie do Gitea](#3-pierwsze-logowanie-do-gitea) 4. [Konfiguracja Git na komputerze](#4-konfiguracja-git-na-komputerze) 5. [Pierwsze pobieranie repozytorium](#5-pierwsze-pobieranie-repozytorium) 6. [Codzienna praca z Git](#6-codzienna-praca-z-git) 7. [Sprawdzanie statusu pracy](#7-sprawdzanie-statusu-pracy) 8. [Rozwiązywanie problemów](#8-rozwiązywanie-problemów) 9. [Zaawansowane operacje](#9-zaawansowane-operacje) 10. [Dobre praktyki](#10-dobre-praktyki) --- ## 1. Co to jest Git? Git to narzędzie do **kontroli wersji** plików, które umożliwia: - Śledzenie historii zmian w plikach - Współpracę wielu osób nad tym samym projektem - Przywracanie poprzednich wersji plików - Równoległą pracę nad różnymi wersjami projektu (gałęzie) **Gitea** to platforma webowa (podobna do GitHub), która pozwala na wygodne przeglądanie repozytoriów przez przeglądarkę internetową. --- ## 2. Instalacja Git Przed rozpoczęciem pracy musisz zainstalować Git na swoim komputerze. ### Windows 1. Pobierz instalator ze strony: **https://git-scm.com/download/windows** 2. Uruchom pobrany plik i postępuj zgodnie z instrukcjami instalatora 3. Podczas instalacji pozostaw domyślne ustawienia (klikaj „Next") 4. Po instalacji otwórz **Git Bash** lub **PowerShell** i sprawdź instalację: ```bash git --version ``` Alternatywnie możesz zainstalować Git przez winget (w PowerShell): ```bash winget install --id Git.Git -e --source winget ``` ### macOS **Opcja 1 – Xcode Command Line Tools** (najprostsza): ```bash xcode-select --install ``` **Opcja 2 – Homebrew** (zalecana dla aktualnej wersji): ```bash brew install git ``` Po instalacji sprawdź wersję: ```bash git --version ``` ### Linux (Ubuntu/Debian) ```bash sudo apt-get update sudo apt-get install git ``` ### Linux (Fedora) ```bash sudo dnf install git ``` Po instalacji sprawdź wersję: ```bash git --version ``` --- ## 3. Pierwsze logowanie do Gitea 1. Otwórz przeglądarkę internetową i przejdź na adres: **http://150.254.88.90:3000** 2. Zaloguj się używając: - **Login**: Twój adres uczelniany (np. `pawkle1@st.amu.edu.pl`) - **Hasło początkowe**: `HakerzyZnają` (zmień je przy pierwszym logowaniu!) 3. Po zalogowaniu przejdź do **Ustawień profilu** i uzupełnij: - Imię i nazwisko - Avatar (opcjonalnie) 1. Kliknij **Odkrywaj**, aby zobaczyć dostępne repozytoria. 1. Otwórz repozytorium. 2. Możesz edytować i przeglądać pliki, README, literaturę lub materiały przez stronę www. --- ## 4. Konfiguracja Git na komputerze Po instalacji Git musisz skonfigurować swoje dane. Otwórz terminal (Git Bash na Windows) i wykonaj: ```bash git config --global user.name "Twoje Imię i Nazwisko" # zapisane w Gitea git config --global user.email "twoj.email@st.amu.edu.pl" ``` Te dane będą widoczne przy każdej wprowadzonej przez Ciebie zmianie. Jeśli chcesz używać inne repozytoria, np. na GitHub od Microsoftu pomiń `--global` aby ustawienia były lokalne, tylko do danego repozytorium. Sprawdź konfigurację: ```bash git config --list ``` --- ## 5. Pierwsze pobieranie repozytorium ### Przez terminal 1. Otwórz terminal (na windowsie PowerShell lub CMD) i przejdź do katalogu, w którym chcesz mieć repozytorium: ```bash cd /ścieżka/do/katalogu ``` 2. Sklonuj repozytorium: ```bash git clone http://150.254.88.90:3000/Seminaria-KLEKA/Seminarium-Psychologia-2027.git # jeśli pojawi sie info o braku uwierzytelnienia - zaloguj sie do repozytorium w przeglądarce # jesli nie masz programu git ściągnij go ze strony https://git-scm.com/install/ ``` 3. Jeśli pojawi się prośba o uwierzytelnienie – podaj login i hasło z Gitea. 4. Wejdź do sklonowanego katalogu: ```bash cd Seminarium-Psychologia-2027 ``` ### Przez aplikację graficzną Możesz też używać aplikacji graficznych takich jak: - **GitHub Desktop** (https://desktop.github.com) - **Sourcetree** (https://www.sourcetreeapp.com) --- ## 6. Codzienna praca z Git ### Model 1: Praca na wspólnej gałęzi `main` Ten model jest odpowiedni, gdy wszyscy pracują nad wspólnymi plikami. Tak np. jest w naszym seminarium na początku. W miarę rozrostu projektów możemy przenosić się na indywidualne gałęzie lub wręcze prywatne repozytoria. #### Krok 1: Pobierz najnowsze zmiany (ZAWSZE na początku pracy!) ```bash git pull ``` #### Krok 2: Wprowadź zmiany Edytuj lub dodaj pliki w katalogu repozytorium (np. notatki w `.md`, skrypty R, dane). #### Krok 3: Dodaj pliki do zapisu Dodaj konkretny plik: ```bash git add NAZWA-PLIKU.md ``` Lub dodaj wszystkie zmienione pliki: ```bash git add . # dodaje wszystkie pliki na listę do wysyłki ``` #### Krok 4: Zatwierdź zmiany z opisem ```bash git commit -m "Opis zmiany, np. Dodano pomysł na badanie X" ``` #### Krok 5: Wyślij zmiany na serwer ```bash git push origin main # wysyła pliki do repozytorium na główną gałąź ``` #### Krok 6: Sprawdź na stronie Gitea Zaloguj się do Gitea i sprawdź w zakładce **Code**, czy Twoje pliki się pojawiły. --- ### Model 2: Praca na własnej gałęzi Ten model jest odpowiedni, gdy każdy pracuje nad własnymi danymi/plikami niezależnie od innych. #### Tworzenie własnej gałęzi (jednorazowo) ```bash git checkout main git pull git checkout -b nazwa-twojej-galezi ``` Na przykład: `dane-katarzyna`, `rozdzial-3`, `oliwia-wniosek` #### Codzienna praca na swojej gałęzi ```bash # Upewnij się, że jesteś na swojej gałęzi git checkout nazwa-twojej-galezi # Wprowadź zmiany w plikach... # Dodaj i zatwierdź zmiany git add . git commit -m "Aktualizacja danych" # Wyślij na serwer git push origin nazwa-twojej-galezi ``` #### Przełączanie między gałęziami ```bash git checkout main # przejście na gałąź główną git checkout dane-katarzyna # przejście na gałąź Katarzyny ``` ### Lista wszystkich gałęzi ```bash git branch -a ``` --- ## 7. Sprawdzanie statusu pracy ### Sprawdź status zmian Pokazuje zmodyfikowane pliki oraz pliki oczekujące na zatwierdzenie: ```bash git status ``` ### Historia commitów Wyświetla listę ostatnich zmian: ```bash git log --oneline ``` ### Sprawdź aktualną gałąź ```bash git branch ``` Gwiazdka (\*) oznacza gałąź, na której aktualnie pracujesz. ### Sprawdź zdalne repozytorium ```bash git remote -v ``` --- ## 8. Rozwiązywanie problemów ### Merge conflict (konflikt scalania) Pojawia się, gdy dwie osoby edytowały ten sam fragment pliku. **Rozwiązanie:** 1. Git oznaczy konfliktowe miejsca w pliku znacznikami `<<<<<<<`, `=======`, `>>>>>>>` 2. Otwórz plik i ręcznie wybierz właściwą wersję 3. Usuń znaczniki konfliktu 4. Zapisz plik i wykonaj: ```bash git add nazwa-pliku git commit -m "Rozwiązano konflikt" git push ``` ### Brak zmian po `git push` Sprawdź: - Czy jesteś w odpowiednim katalogu repozytorium? - Czy jesteś na właściwej gałęzi? (`git branch`) - Czy wykonałeś `git add` i `git commit` przed `git push`? ### Błąd uwierzytelnienia Zaloguj się najpierw do Gitea przez przeglądarkę, a następnie spróbuj ponownie. --- ## 9. Zaawansowane operacje ### Ignorowanie plików (`.gitignore`) Aby Git ignorował określone pliki, utwórz plik `.gitignore` w głównym katalogu repozytorium: ``` # Pliki tymczasowe R .Rhistory .RData .Rproj.user/ # Katalog na pliki lokalne _lokalnie/ ``` Od tej pory GIt nie będzie zwracał uwagi co się dzieje w katalogu `_lokalnie` ### Usunięcie pliku/katalogu z repozytorium (zachowując lokalnie) ```bash git rm -r --cached nazwa-katalogu git commit -m "Usunięto katalog z repozytorium" git push ``` ### Usunięcie katalogu z gałęzi main Jeśli przez pomyłkę dodano prywatny katalog do `main`: ```bash git checkout main git rm -r NazwaKatalogu/ git commit -m "Usunięto prywatny katalog" git push ``` ### Zmiana adresu zdalnego repozytorium ```bash git remote set-url origin http://150.254.88.90:3000/Seminaria-KLEKA/NazwaRepo.git ``` ### Nadpisanie zdalnej wersji lokalną (OSTROŻNIE!) **Uwaga:** Ta operacja nadpisuje historię na serwerze! ```bash git push origin main --force ``` --- ## 11. Dobre praktyki 1. **Zawsze wykonuj `git pull` przed rozpoczęciem pracy** – unikniesz konfliktów. 2. **Używaj opisowych wiadomości w commitach** – np. „Dodano analizę rzetelności skali X" zamiast „update". 3. **Nie wysyłaj plików tymczasowych** – dodaj do `.gitignore`: - `.Rhistory` - `.RData` - `.Rproj.user/` 4. **Nie wysyłaj dużych plików binarnych** – Git nie jest optymalny dla dużych plików (np. baz danych, filmów). 5. **Regularnie zapisuj postępy** – małe, częste commity są lepsze niż jeden duży. 6. **Pracując na własnej gałęzi** – nie dodawaj katalogów innych. 7. **W README zapisuj postępy i refleksje** – to ułatwia orientację w projekcie. --- ## Szybka ściągawka | Polecenie | Opis | |-----------|------| | `git clone URL` | Pobierz repozytorium | | `git pull` | Pobierz najnowsze zmiany | | `git status` | Sprawdź status zmian | | `git add .` | Dodaj wszystkie pliki | | `git commit -m "opis"` | Zatwierdź zmiany | | `git push origin main` | Wyślij na serwer | | `git branch` | Pokaż gałęzie | | `git checkout nazwa` | Przełącz gałąź | | `git checkout -b nazwa` | Utwórz nową gałąź | | `git log --oneline` | Historia commitów | --- **Wskazówka:** Jeśli zapomnisz hasła lub napotkasz problem techniczny, skontaktuj się z prowadzącym seminarium.