418 lines
9.7 KiB
Markdown
418 lines
9.7 KiB
Markdown
# 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.
|