# GitHub kezdőknek

> Átfogó útmutató a Git és GitHub használatához WordPress fejlesztőknek.

A Git és a GitHub a modern szoftverfejlesztés alapvető eszközei. Segítenek a kód verziókezelésében, csapatmunkában és a projektek biztonságos tárolásában.

## Mi az a Git és GitHub?

### Git

A **Git** egy elosztott verziókezelő rendszer, amelyet Linus Torvalds fejlesztett 2005-ben. Lehetővé teszi:

- Kódváltozások nyomon követését
- Korábbi verziókhoz való visszatérést
- Párhuzamos fejlesztést branch-eken
- Offline munkát a teljes projekt történetével

### GitHub

A **GitHub** egy felhőalapú platform Git repository-k tárolására és kezelésére. Funkciói:

- Repository hosting
- Együttműködési eszközök (Issues, Pull Requests)
- CI/CD integráció (GitHub Actions)
- Projektmenedzsment (Projects, Milestones)
- Kód review és biztonság

> **Összefoglalva**
>
> **Git** = verziókezelő eszköz a gépeden
> **GitHub** = online platform a Git repository-k tárolására

## Miért érdemes megtanulni?

| Szempont | Előny |
|----------|-------|
| **Csapatmunka** | Több fejlesztő dolgozhat ugyanazon a projekten |
| **Biztonság** | A kód biztonságosan tárolva, nem vész el |
| **Történet** | Minden változás visszakövethető |
| **Visszaállítás** | Bármikor visszatérhetsz korábbi verzióhoz |
| **Iparági standard** | A legtöbb cég elvárja a Git ismeretét |

A GitHub 2024-ben már több mint **100 millió** fejlesztőt számlál, és a legtöbb nyílt forráskódú projekt itt található.

## Telepítés és beállítás

### 1. Git telepítése

#### macOS

```bash
# Homebrew-val (ajánlott)
brew install git

# Vagy Xcode Command Line Tools-zal
xcode-select --install
```

#### Windows

Töltsd le a telepítőt: [git-scm.com/download/win](https://git-scm.com/download/win)

Vagy használd a winget-et:
```powershell
winget install Git.Git
```

#### Linux (Ubuntu/Debian)

```bash
sudo apt update
sudo apt install git
```

#### Ellenőrzés

```bash
git --version
# Kimenet: git version 2.43.0
```

### 2. GitHub fiók létrehozása

1. Látogass el a [github.com/signup](https://github.com/signup) oldalra
2. Add meg az email címed
3. Válassz felhasználónevet és jelszót
4. Erősítsd meg az email címed

### 3. Git konfiguráció

A GitHub fiókod összekapcsolása a Git-tel:

```bash
# Felhasználónév beállítása
git config --global user.name "Felhasználóneved"

# Email beállítása (ugyanaz, mint a GitHub-on)
git config --global user.email "email@example.com"

# Alapértelmezett branch neve
git config --global init.defaultBranch main

# Beállítások ellenőrzése
git config --list
```

### 4. SSH kulcs beállítása (ajánlott)

Az SSH kulcs biztonságosabb és kényelmesebb, mint a jelszó használata.

```bash
# SSH kulcs generálása
ssh-keygen -t ed25519 -C "email@example.com"

# Kulcs hozzáadása az SSH agent-hez
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# Publikus kulcs megjelenítése
cat ~/.ssh/id_ed25519.pub
```

A megjelenő kulcsot másold ki, majd:

1. GitHub → **Settings** → **SSH and GPG keys**
2. Kattints a **New SSH key** gombra
3. Illeszd be a kulcsot és mentsd

Ellenőrzés:
```bash
ssh -T git@github.com
# Kimenet: Hi username! You've successfully authenticated...
```

## Alapvető Git parancsok

### Repository létrehozása

```bash
# Új repository inicializálása
git init

# Meglévő repository klónozása
git clone https://github.com/user/repo.git

# SSH-val klónozás
git clone git@github.com:user/repo.git
```

### Alapvető workflow

```bash
# 1. Állapot ellenőrzése
git status

# 2. Fájlok hozzáadása a staging area-hoz
git add .                    # Minden fájl
git add filename.php         # Egy fájl
git add src/                 # Egy mappa

# 3. Változások commitolása
git commit -m "Add: új funkció leírása"

# 4. Feltöltés GitHub-ra
git push origin main
```

### Branch kezelés

```bash
# Branch-ek listázása
git branch

# Új branch létrehozása és váltás
git checkout -b feature/new-feature

# Branch váltás
git checkout main

# Branch törlése
git branch -d feature/new-feature

# Branch merge-elése
git checkout main
git merge feature/new-feature
```

### Távoli repository kezelés

```bash
# Remote hozzáadása
git remote add origin git@github.com:user/repo.git

# Remote-ok listázása
git remote -v

# Változások lekérése
git pull origin main

# Változások feltöltése
git push origin main
```

### Hasznos parancsok

```bash
# Változások megtekintése
git diff

# Commit történet
git log --oneline

# Utolsó commit visszavonása (lokálisan)
git reset --soft HEAD~1

# Fájl visszaállítása
git checkout -- filename.php

# Stash (változások ideiglenes félretétele)
git stash
git stash pop
```

## Első projekt feltöltése GitHub-ra

### 1. Hozz létre egy repository-t GitHub-on

1. Kattints a **+** ikonra → **New repository**
2. Add meg a repository nevét
3. Válaszd ki: **Public** vagy **Private**
4. **Ne** pipáld be a "Add a README file" opciót
5. Kattints: **Create repository**

### 2. Töltsd fel a projekted

```bash
# Navigálj a projekt mappájába
cd /path/to/your/project

# Git inicializálása
git init

# README létrehozása
echo "# Projekt neve" >> README.md

# Fájlok hozzáadása
git add .

# Első commit
git commit -m "Initial commit"

# GitHub remote hozzáadása
git remote add origin git@github.com:username/repo-name.git

# Feltöltés
git push -u origin main
```

## GitHub Desktop

A [GitHub Desktop](https://desktop.github.com/) egy grafikus alkalmazás, amely megkönnyíti a Git használatát.

### Telepítés

1. Töltsd le: [desktop.github.com](https://desktop.github.com/)
2. Telepítsd az alkalmazást
3. Jelentkezz be a GitHub fiókod

### Főbb funkciók

| Funkció | Leírás |
|---------|--------|
| **Clone** | Repository letöltése |
| **Commit** | Változások mentése |
| **Push/Pull** | Szinkronizálás GitHub-bal |
| **Branch** | Branch-ek kezelése |
| **History** | Commit történet megtekintése |
| **Diff** | Változások vizuális összehasonlítása |

### Használat

1. **Repository klónozása**: File → Clone repository
2. **Változások commitolása**: Írj commit üzenetet és kattints a Commit gombra
3. **Push**: Kattints a Push origin gombra
4. **Pull**: Kattints a Fetch origin, majd Pull gombra

## Commit üzenet konvenciók

Használj tiszta, leíró commit üzeneteket:

```bash
# Formátum
<típus>: <rövid leírás>

# Típusok
feat:     Új funkció
fix:      Hibajavítás
docs:     Dokumentáció
style:    Formázás (nem változtat kódon)
refactor: Refaktorálás
test:     Tesztek
chore:    Build, konfiguráció

# Példák
git commit -m "feat: Add user authentication"
git commit -m "fix: Resolve login page redirect issue"
git commit -m "docs: Update README with installation steps"
```

## .gitignore

A `.gitignore` fájl meghatározza, mely fájlokat ne kövesse a Git.

### WordPress projekt .gitignore

```gitignore
# WordPress core (ha Composer-rel kezeled)
/wp/

# Uploads
wp-content/uploads/

# Cache
wp-content/cache/
wp-content/advanced-cache.php
wp-content/wp-cache-config.php

# Konfigurációs fájlok
wp-config.php
.env

# IDE
.idea/
.vscode/
*.sublime-*

# OS
.DS_Store
Thumbs.db

# Dependencies
/vendor/
/node_modules/

# Build
/dist/
*.min.js
*.min.css

# Logs
*.log
debug.log
```

## Gyakori hibák és megoldások

### "Permission denied (publickey)"

```bash
# SSH kulcs ellenőrzése
ssh -T git@github.com

# Ha nincs kulcs, generálj újat
ssh-keygen -t ed25519 -C "email@example.com"
```

### "Updates were rejected"

```bash
# Először pull-olj
git pull origin main --rebase

# Majd push
git push origin main
```

### "Merge conflict"

```bash
# 1. Nyisd meg a konfliktusok fájlokat
# 2. Keresd meg a <<<<<<< és >>>>>>> jelöléseket
# 3. Szerkeszd manuálisan
# 4. Add hozzá és commitold

git add .
git commit -m "fix: Resolve merge conflicts"
```

### Rossz commit visszavonása

```bash
# Utolsó commit visszavonása (változások megmaradnak)
git reset --soft HEAD~1

# Utolsó commit törlése (változások is törlődnek!)
git reset --hard HEAD~1
```

## VS Code integráció

A VS Code beépített Git támogatással rendelkezik:

1. **Source Control panel** (Ctrl+Shift+G)
2. **Git Graph** extension a vizuális történethez
3. **GitLens** extension haladó funkciókhoz

### Hasznos VS Code Git műveletek

- **Stage Changes**: + ikon a fájl mellett
- **Commit**: ✓ ikon a tetején
- **Push/Pull**: ... menü → Push/Pull
- **Branch váltás**: Bal alsó sarokban

## Források

- [Git hivatalos dokumentáció](https://git-scm.com/doc)
- [GitHub Docs](https://docs.github.com)
- [GitHub Skills](https://skills.github.com/) - Interaktív tanulás
- [Pro Git könyv](https://git-scm.com/book/en/v2) - Ingyenes
- [GitHub Desktop](https://desktop.github.com/)
