# 📘 GitHub Push _ Pull 教學（KiCad 專案範例）

## 1️⃣ 建立 GitHub Repository

1. 登入 [GitHub](https://github.com)
2. 點選右上角 **New repository**
3. 輸入：

   * Repository name：例如 `MyKiCadProject`
   * 可選 Public / Private
   * 建議先不要勾選「Add README」與「.gitignore」，避免衝突
4. 建立完成後，複製 Repository 的 **URL**：

   * HTTPS：`https://github.com/帳號/MyKiCadProject.git`
   * SSH：`git@github.com:帳號/MyKiCadProject.git`

---

## 2️⃣ 本地端專案初始化（第一次推送）

假設你已經有一個 KiCad 專案資料夾，例如 `MyPCB/`。

```bash
cd MyPCB   # 進入專案資料夾
git init   # 初始化 Git
git add .  # 加入所有檔案 (包括 KiCad 專案)
git commit -m "Initial commit: Add KiCad project"
```

### 綁定 GitHub Repo

```bash
git remote add origin https://github.com/帳號/MyKiCadProject.git
```

### 第一次推送

```bash
git branch -M main            # 確保主分支叫 main
git push -u origin main       # 推送到 GitHub
```

完成後，到 GitHub 頁面就會看到你的 KiCad 專案檔案。

---

## 3️⃣ 後續更新（Push 流程）

每次修改 KiCad 專案後，流程就是：

```bash
git add .                                # 加入修改的檔案
git commit -m "Update schematic layout"  # 填寫修改訊息
git push                                 # 推送到 GitHub
```

---

## 4️⃣ 團隊協作（Pull 流程）

### 第一次拉取 (Clone)

```bash
git clone https://github.com/帳號/MyKiCadProject.git
cd MyKiCadProject
```

### 更新專案 (Pull 最新版)

```bash
git pull origin main
```

---

## 5️⃣ 常見指令速查表

| 動作          | 指令                            |
| ----------- | ----------------------------- |
| 初始化 Git 專案  | `git init`                    |
| 新增遠端 Repo   | `git remote add origin <URL>` |
| 查看遠端設定      | `git remote -v`               |
| 加入檔案        | `git add .`                   |
| 建立 Commit   | `git commit -m "訊息"`          |
| 推送到 GitHub  | `git push -u origin main`     |
| 後續推送        | `git push`                    |
| 從 GitHub 下載 | `git clone <URL>`             |
| 更新遠端更動      | `git pull origin main`        |

---

## 6️⃣ 建議：為 KiCad 加入 `.gitignore`

KiCad 會產生一些暫存檔，不建議上傳，例如：`*.bak`、`*.kicad_prl`。

建立 `.gitignore`：

```gitignore
# KiCad backup files
*.bak
*.kicad_prl
*.tmp
*.bck

# Cache
*.zip
*.tar.gz
*.gz
```

---

## 7️⃣ 流程圖：第一次推送 vs 後續更新

```
graph TD
    A[建立 GitHub Repo] --> B[本地 git init]
    B --> C[git add .]
    C --> D[git commit -m "Initial commit"]
    D --> E[git remote add origin <URL>]
    E --> F[git branch -M main]
    F --> G[git push -u origin main]
    G --> H[完成第一次推送]

    subgraph 後續更新
        I[修改 KiCad 專案] --> J[git add .]
        J --> K[git commit -m "Update"]
        K --> L[git push]
        L --> M[更新到 GitHub]
    end
```

---