You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/hk/1-getting-started-lessons/2-github-basics/README.md

777 lines
37 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "5c383cc2cc23bb164b06417d1c107a44",
"translation_date": "2026-01-06T13:14:50+00:00",
"source_file": "1-getting-started-lessons/2-github-basics/README.md",
"language_code": "hk"
}
-->
# GitHub 簡介
嗨,未來的開發者!👋 準備好加入全球數百萬程式員的行列了嗎?我非常興奮地向你介紹 GitHub——把它想像成程式員的社交媒體平台不同的是我們分享的不是午餐照而是程式碼一起打造令人驚嘆的作品
這點真的讓我震撼不已:你手機上的每個應用程式、你瀏覽的每個網站,以及你將學習使用的大多數工具,都是由團隊開發者在像 GitHub 這樣的平台上共同協作完成的。你喜愛的音樂應用程式?可能就有人跟你一樣貢獻了程式碼。那款玩不膩的遊戲?沒錯,可能就是用 GitHub 協作建造出來的。現在,你也將學會如何成為這個精彩社群的一員!
我知道剛開始可能會覺得很多——說真的,我還記得第一次看到 GitHub 頁面時想:「這到底是什麼意思?」但事實是:每個開發者都是從你現在的狀態開始的。結束這堂課時,你會有自己的 GitHub 倉庫(把它想像成你個人在雲端的專案展示台),你會知道如何儲存工作、與他人分享,甚至參與數百萬人使用的專案。
我們會一步步一起走這趟旅程,沒有急躁,沒有壓力——只有你我和一些超酷的工具,它們將成為你新的好朋友!
![Intro to GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f9.hk.png)
> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
journey
title 你今日的 GitHub 冒險
section 設置
Install Git: 4: You
Create Account: 5: You
First Repository: 5: You
section 精通 Git
Local Changes: 4: You
Commits & Pushes: 5: You
Branching: 4: You
section 合作
Fork Projects: 4: You
Pull Requests: 5: You
Open Source: 5: You
```
## 課前小測驗
[Pre-lecture quiz](https://ff-quizzes.netlify.app)
## 介紹
在我們深入真正令人興奮的內容之前,先讓你的電腦準備好 GitHub 的魔法吧!想像這就像在創作傑作之前整理藝術工具——有了合適的工具,一切都會變得更順暢、更有趣。
我會親自引導你完成每個設定步驟,我保證並沒有看起來那麼可怕。如果一開始有些地方不太懂,那完全正常!我還記得設定第一個開發環境時,感覺像在解讀古埃及象形文字。每個開發者都曾經跟你現在一樣,不知道自己有沒有做對。劇透一下:你正在學習,已經做對了!🌟
本課將涵蓋:
- 追蹤你在電腦上的工作
- 與他人合作專案
- 如何貢獻開源軟體
### 先決條件
先讓你的電腦準備好 GitHub 的魔法吧!別擔心--這個設定只需做一次,之後你的程式之旅都將順利進行。
好了,讓我們從基礎開始!首先,我們需要確認你的電腦上是否已經安裝了 Git。Git 基本上就像一個超聰明的助手,記錄你對程式碼的每個變更,比起每兩秒猛按 Ctrl+S我們都做過好太多了
在終端機輸入這行魔法指令,看看你的電腦是否有安裝 Git
`git --version`
如果還沒安裝,別擔心!到 [download Git](https://git-scm.com/downloads) 下載安裝就好。裝好之後,我們要正式介紹你和 Git 認識一下:
> 💡 **初次設定**:這些指令會告訴 Git 你是誰。這資訊會附加在你每次提交commit所以請選擇你願意公開分享的名字和郵件。
```bash
git config --global user.name "your-name"
git config --global user.email "your-email"
```
要檢查 Git 是否已設好,可以輸入:
```bash
git config --list
```
你還需要有 GitHub 帳號、程式碼編輯器(如 Visual Studio Code還有打開終端機或命令提示字元
造訪 [github.com](https://github.com/),還沒帳號就註冊,或登入並完善個人資料。
💡 **現代提示**:考慮設定 [SSH 金鑰](https://docs.github.com/en/authentication/connecting-to-github-with-ssh) 或使用 [GitHub CLI](https://cli.github.com/) 來無密碼更輕鬆認證。
✅ GitHub 並非唯一的程式碼倉庫,市場上還有其他選擇,但 GitHub 最出名。
### 準備工作
你需要在本機(筆電或電腦)準備一個有程式碼的資料夾,還有 GitHub 上一個公開倉庫,作為示範如何貢獻他人專案的例子。
### 保護你的程式碼安全
說點安全性的事情——別擔心,不會嚇到你!把安全習慣想成鎖車或鎖房門。這些簡單習慣會成為你的第二天性,保護你辛苦的作品。
我們會從一開始就展示如何用現代且安全的方式與 GitHub 合作。這樣你能培養好習慣,伴隨你整個程式人生。
使用 GitHub 時,重要的是遵守安全最佳實務:
| 安全範疇 | 最佳實務 | 重要原因 |
|---------------|---------------|----------------|
| **身份驗證** | 使用 SSH 金鑰或個人存取權杖 | 密碼安全性較差並逐漸淘汰 |
| **雙重認證** | 啟用 GitHub 帳號 2FA | 增加帳號安全防護層 |
| **倉庫安全** | 永遠不提交敏感資訊 | API 金鑰與密碼不該放公開倉庫 |
| **相依管理** | 啟用 Dependabot 更新 | 保持依賴套件安全與最新 |
> ⚠️ **重要安全提醒**:切勿將 API 金鑰、密碼或其他敏感資訊提交到任何倉庫。使用環境變數與 `.gitignore` 檔案來保護敏感資料。
**現代認證設定:**
```bash
# 產生 SSH 金鑰(現代 ed25519 演算法)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 設定 Git 使用 SSH
git remote set-url origin git@github.com:username/repository.git
```
> 💡 **專業提示**SSH 金鑰讓你不必重複輸入密碼,比傳統認證更安全。
---
## 像專業人士般管理你的程式碼
好了,這裡開始真正有趣了!🎉 我們將學習如何像專家一樣追蹤與管理程式碼,坦白說,這是我最喜歡教的主題之一,因為它會改變你的開發方式。
想像你正在寫一個精彩故事想要記錄每個稿本、每個絕妙修訂還有每個「等等這主意太棒了」的瞬間。Git 就是為你的程式碼做到這件事!它就像一個不可思議的時光筆記本,記錄所有細節——每一次敲擊鍵盤、每個修正、每個「哎呀,壞了!」的時刻,你都能立刻回到過去。
說實話——剛開始可能會有點難懂。我當年也想:「為什麼不能像平常一樣直接存檔呢?」但相信我,一旦你「察覺」了 Git 的妙用(一定會的!),你會有「以前怎麼沒用過它?」的靈光一閃。就像一輩子走路,忽然發現自己會飛一樣!
假設你本機有一個資料夾,裡面放著程式碼專案,你想開始用 git版本控制系統追蹤進度。有人說用 git 有點像寫給未來自己的情書。數天、數週、數月後,再回頭看你的 commit 訊息,你能回憶為何改動,或「還原」變更--前提是你有寫好 commit 訊息。
```mermaid
flowchart TD
A[📁 你的專案檔案] --> B{是否為 Git 倉庫?}
B -->|否| C[git init]
B -->|是| D[進行更改]
C --> D
D --> E[git add .]
E --> F["git commit -m '訊息'"]
F --> G[git push]
G --> H[🌟 GitHub 上的代碼!]
H --> I{想要協作嗎?}
I -->|是| J[分叉並克隆]
I -->|否| D
J --> K[建立分支]
K --> L[進行更改]
L --> M[提取請求]
M --> N[🎉 貢獻中!]
style A fill:#fff59d
style H fill:#c8e6c9
style N fill:#ff4081,color:#fff
```
### 任務:建立你的第一個倉庫!
> 🎯 **你的任務(我超級期待!)**:我們要一起建立你的第一個 GitHub 倉庫完成後你會有屬於自己的網路小天地存放程式碼並完成第一次「commit」開發者專用語用聰明方式保存工作成果
>
> 這真的是特別的時刻——你即將正式加入全球開發者社群!我依然記得第一次創建倉庫時的興奮,心想「哇,我真的做到了!」
咱們一步步共赴這場冒險。每個步驟都慢慢來,不用急,保證你絕對懂。記得,每位你認識的程式達人都曾跟你一樣,正準備創建他們的第一個倉庫。多酷啊!
> 觀看影片
>
> [![Git and GitHub basics video](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4)
**一起動手做:**
1. **在 GitHub 建立你的倉庫**。前往 GitHub.com找那個明亮的綠色 **New** 按鈕(或右上角的 **+** 號),點擊並選擇 **New repository**
以下是操作步驟:
1. 幫你的倉庫取個名字──取一個對你有意義的!
1. 可以加個描述(讓別人知道專案是什麼)
1. 決定是公開(大家都能看到)還是私密(只限你)
1. 建議勾選新增 README 檔案——這是你專案的封面頁
1. 點擊 **Create repository**,慶祝一下-你剛創建了第一個倉庫!🎉
2. **進入你的專案資料夾**。打開終端機(別怕,真的沒那麼可怕!)。我們要指示電腦專案檔案位置。輸入以下指令:
```bash
cd [name of your folder]
```
**我們這樣做是因為:**
- 其實是在告訴電腦「嘿,帶我到專案資料夾」
- 這就像在桌面打開指定資料夾,但用文字指令執行
-`[name of your folder]` 換成你專案資料夾的真實名稱
3. **將資料夾變成 Git 倉庫**。魔法就在此發生!打:
```bash
git init
```
**這步驟的意義(很酷吧!):**
- Git 在你的專案中建立一個隱藏的 `.git` 資料夾,你看不到它,但它存在著!
- 你的資料夾現在成為可追蹤所有變更的「倉庫」
- 就像賦予資料夾超能力,能記住一切
4. **查看目前狀態**。看看 Git 對你的專案「怎麼看」:
```bash
git status
```
**讀懂 Git 講了什麼:**
你可能會看到像這樣的東西:
```output
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file.txt
modified: file2.txt
```
**別慌!這是什麼意思:**
- 紅色的檔案代表有變更但還沒準備好要儲存
- 綠色的檔案(如果有看到)代表已準備好儲存
- Git 很貼心,告訴你下一步該怎麼做
> 💡 **專業提示**`git status` 是你最好的朋友!任何時候搞不懂狀況就用它。它就像問 Git 「嘿,情況怎樣?」
5. **準備好要儲存的檔案**(稱為「暫存」):
```bash
git add .
```
**我們剛做了什麼:**
- 告訴 Git 「我想把這資料夾裡的所有檔案都加入下一次儲存」
- `.` 就像說「資料夾裡所有的東西」
- 現在檔案都「暫存」了,準備下一步
**想挑選性加入?** 你也可以只加入特定檔案:
```bash
git add [file or folder name]
```
**為什麼會想這樣做?**
- 有時候你想一併保存相關修改
- 幫助你把工作化整為零
- 更容易理解什麼時候改了什麼
**改主意了?** 沒問題!可以這樣取消暫存:
```bash
# 取消暫存所有項目
git reset
# 只取消暫存一個檔案
git reset [file name]
```
別擔心-這不會刪除你的檔案,只是把檔案從「準備儲存」的列表移除。
6. **正式永久保存你的工作**(做出第一個 commit
```bash
git commit -m "first commit"
```
**🎉 恭喜你!完成你的第一次 commit**
**剛發生了什麼:**
- Git 在這一刻幫你把所有暫存檔案「拍了一張快照」
- commit 訊息「first commit」說明這次保存的意義
- Git 給予這張快照一個獨特 ID讓你能隨時找到它
- 你正式開始追蹤專案歷史!
> 💡 **未來 commit 訊息**下次提交時訊息要更具描述性不要只寫「updated stuff」試試「Add contact form to homepage」或「Fix navigation menu bug」。未來的你會感謝現在用心的你
7. **連接本機專案到 GitHub**。目前專案只在你電腦裡,我們要連到 GitHub 倉庫,才能分享給全世界!
先去你的 GitHub 倉庫頁面,複製 URL 回來,然後打:
```bash
git remote add origin https://github.com/username/repository_name.git
```
(把這個 URL 換成你實際的倉庫網址!)
**我們做了什麼:**
- 我們已建立你本地專案和你的 GitHub 倉庫之間的連接
- 「origin」只是你 GitHub 倉庫的暱稱——就像把聯絡人加到你的電話裡一樣
- 現在本地的 Git 知道該把你的程式碼傳送到哪裡,當你準備好分享時
💡 **更簡易的方法**:如果你已安裝 GitHub CLI可以用一條指令完成這些動作
```bash
gh repo create my-repo --public --push --source=.
```
8. **將你的程式碼傳送到 GitHub**(重要時刻!):
```bash
git push -u origin main
```
**🚀 就是現在!你要將程式碼上傳到 GitHub 了!**
**發生了什麼:**
- 你的提交從電腦傳到 GitHub
- `-u` 旗標建立永久連接,未來推送更方便
- 「main」是你的主要分支名稱就像主資料夾
- 之後你只要打 `git push` 就能上傳!
💡 **小提示**如果你的分支叫別的名字例如「master」請用那個名稱。可用 `git branch --show-current` 確認。
9. **你的全新日常編程節奏**(這會讓你上癮!):
從此以後,當你對專案作出改動時,有一個簡單的三步舞:
```bash
git add .
git commit -m "describe what you changed"
git push
```
**這會成為你的編程節奏:**
- 作出很棒的程式碼改動 ✨
-`git add` 登記改動「Git請注意這些改動
-`git commit` 並附上描述訊息儲存改動(未來的你會感謝現在的你!)
-`git push` 和世界分享你的改動 🚀
- 不斷重複——認真說,這會像呼吸一樣自然!
我喜歡這個工作流程,因為它就像遊戲裡有多個儲存點。喜歡剛才的改動?就 commit想試些冒險的東西沒問題——如果出錯隨時可以回到最後的提交狀態
> 💡 **小貼士**:你也可能想用 `.gitignore` 檔,避免不想追蹤的檔案出現在 GitHub 上——像存在同資料夾裡但不適合放公開倉庫的筆記檔。能從 [.gitignore templates](https://github.com/github/gitignore) 找到範本,或用 [gitignore.io](https://www.toptal.com/developers/gitignore) 自製。
### 🧠 **第一次倉庫提交:感覺如何?**
**花點時間慶祝並反思:**
- 第一次看到程式碼出現在 GitHub 時是什麼感覺?
- 哪一步最令你困惑,哪一步出乎意料地簡單?
- 你能用自己的話解釋 `git add`、`git commit` 和 `git push` 的差別嗎?
```mermaid
stateDiagram-v2
[*] --> LocalFiles: 建立專案
LocalFiles --> Staged: git add .
Staged --> Committed: git commit
Committed --> GitHub: git push
GitHub --> [*]: 成功!🎉
note right of Staged
檔案準備好儲存
end note
note right of Committed
快照已建立
end note
```
> **記住**:即使是有經驗的開發者,有時也會忘記正確指令。讓這流程變成肌肉記憶需要練習——你做得很棒!
#### 現代 Git 工作流程
考慮採用以下現代規範:
- **Conventional Commits**:用標準化的提交訊息格式,如 `feat:`、`fix:`、`docs:` 等。了解更多:[conventionalcommits.org](https://www.conventionalcommits.org/)
- **Atomic commits**:每個 commit 只代表一個邏輯修改
- **Frequent commits**:經常、用描述性訊息提交,避免一次大量、少次提交
#### Commit 訊息
一個優秀的 Git commit 主旨句應完成以下句子:
If applied, this commit will <你的主旨句>
主旨用命令式、現在時用「change」非「changed」或「changes」。
正文(可選)也用命令式、現在時,應說明為何改動並和之前行為對比。是解釋「為什麼」不是「怎麼做」。
✅ 花幾分鐘逛逛 GitHub。能找到非常好的 commit 訊息嗎?或非常簡短的訊息?你覺得 commit 訊息中最重要且有用的資訊是什麼?
## 與他人合作(有趣的部分!)
戴好帽子,因為這正是 GitHub 魔法開始的地方!🪄 你已掌握管理自己程式碼,但現在我們要進入我最愛的部分——與來自世界各地的優秀開發者合作。
想像一下:明天醒來時,你發現有人在東京幫你改進了程式碼;有人在柏林修復你卡住的 bug下午時聖保羅的一位開發者加入了你從未想過的功能。這不是科幻——在 GitHub 世界裡,這就是日常!
讓我最興奮的是,你即將學到的協作技能,就是 Google、微軟以及你喜歡的初創公司每天使用的 EXACT 工作流程。你不只是在學一個酷工具——你在學讓全球軟體世界協同運作的祕密語言。
說真的,一旦你體驗到有人合併你的第一個 Pull Request 的快感,就會懂為什麼開發者對開源充滿熱情。就像參與全球最大、最具創意的團隊專案!
> 參考影片
>
> [![Git and GitHub basics video](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8)
放到 GitHub 的主要原因是為了方便與其他開發者合作。
```mermaid
flowchart LR
A[🔍 尋找專案] --> B[🍴 分叉儲存庫]
B --> C[📥 複製到本地]
C --> D[🌿 建立分支]
D --> E[✏️ 進行更改]
E --> F[💾 提交更改]
F --> G[📤 推送分支]
G --> H[🔄 建立拉取請求]
H --> I{維護者審核}
I -->|✅ 核准| J[🎉 合併!]
I -->|❓ 要求修改| K[📝 更新內容]
K --> F
J --> L[🧹 清理分支]
style A fill:#e3f2fd
style J fill:#e8f5e8
style L fill:#fff3e0
```
在你的倉庫中,前往 `Insights > Community` 查看你的專案如何符合社區建議標準。
想讓你的倉庫看起來專業且讓人感到歡迎嗎?到你的倉庫點擊 `Insights > Community`。這個很棒的功能會告訴你專案在 GitHub 社區認為「良好倉庫實踐」方面的表現。
> 🎯 **讓你的專案閃耀**:一個組織良好且文件齊全的倉庫就像乾淨、招人的店面。它告訴大家你很在乎作品,也讓其他人想投入貢獻!
**以下讓倉庫變優秀:**
| 應加入什麼 | 為何重要 | 帶給你的效果 |
|-------------|-----------|---------------|
| **描述** | 第一印象很重要! | 讓人第一時間知道你的專案做什麼 |
| **README** | 專案的門面 | 就像迎新導覽給新訪客 |
| **貢獻指南** | 表示歡迎協助 | 讓人明白如何協助你 |
| **行為守則** | 創造友善環境 | 讓每個人都感覺被歡迎參與 |
| **授權條款** | 法務清楚 | 讓他人知道如何使用你的程式碼 |
| **安全政策** | 展現負責任 | 表現專業作風 |
> 💡 **專家秘訣**GitHub 提供這些檔案的範本。建立新倉庫時勾選即可自動生成。
**探索現代 GitHub 功能:**
🤖 **自動化與 CI/CD**
- **GitHub Actions** 自動化測試與部署
- **Dependabot** 依賴自動更新
💬 **社群與專案管理:**
- **GitHub Discussions** 問題之外的社群討論空間
- **GitHub Projects** 看板式專案管理
- **分支保護規則** 強制程式碼品質標準
這些資源能幫助新團隊成員加入時更快上手。通常新貢獻者在看程式碼前會先看這些,判斷專案是否值得他們花時間。
✅ README 檔雖然準備起來花時間,但常被忙碌的維護者忽略。能找到特別有描述性的範例嗎?備註:有一些[工具幫助創建優質 README](https://www.makeareadme.com/)值得嘗試。
### 任務:合併一些程式碼
貢獻文件幫助他人參與專案。說明你找什麼樣的貢獻及流程如何。貢獻者需經過一系列步驟,才能在 GitHub 貢獻給你的倉庫:
1. **Fork 你的倉庫** 大概你會希望大家先對你的專案 _fork_。Fork 是建立你倉庫的複製品在他們的 GitHub 帳號上。
1. **Clone**。接著他們會 clone 專案到本地機器。
1. **建立分支**。你會想請他們為他們的工作建立一個 _branch_
1. **專注於一件事**。請貢獻者一次專注於一個改動內容——這樣你合併他們工作的機率比較高。想像他們修 bug、新增功能、更新多項測試——如果你只能接受其中兩項或一項怎麼辦
✅ 想像在寫和交付優質程式碼時,分支扮演關鍵角色。你能想到哪些應用場景?
> 註:成為你想看到的改變,也建立分支管理自己的工作吧。你所做的 commit 預設是在你當前「checkout」的分支上。用 `git status` 查看你在哪個分支。
讓我們來看一下貢獻者的工作流程。假設貢獻者已經 _fork__clone_ 好 repo且本地已有 Git 環境:
1. **建立分支**。用命令 `git branch` 建立一個準備提交改動的分支:
```bash
git branch [branch-name]
```
> 💡 **現代做法**:你也可以用一條命令同時建立並切換分支:
```bash
git switch -c [branch-name]
```
1. **切換到工作分支**。用 `git switch` 切換到剛建立的分支並更新工作目錄:
```bash
git switch [branch-name]
```
> 💡 **現代提示**`git switch` 是改用於切分支的更清晰替代 `git checkout`,對初學者更安全。
1. **開始工作**。此時你要新增改動。別忘告訴 Git命令如下
```bash
git add .
git commit -m "my changes"
```
> ⚠️ **提交訊息品質**:務必為 commit 取個好名字,無論是為自己還是你協助的 repo 維護者。具體說明你改了什麼!
1. **合併你的工作到 `main` 分支**。完成工作後,想結合你的工作和 `main` 分支的內容。`main` 可能已有更新,先用以下命令拉最新版本:
```bash
git switch main
git pull
```
現在你要確保任何 _衝突_,即 Git 不知如何 _合併_ 的情況,都處理在你的工作分支。執行:
```bash
git switch [branch_name]
git merge main
```
`git merge main` 會把 `main` 最新變更帶入你的分支。希望能直接繼續。如果不行VS Code 會告訴你 Git 混淆在哪裡,並讓你修改檔案指定正確版本。
💡 **現代替代法**:考慮用 `git rebase` 取得更乾淨的歷史:
```bash
git rebase main
```
這會把你的提交依序放到最新的 main 上,形成線性歷史。
1. **推送你的工作到 GitHub**。推送工作到 GitHub 具包含兩件事。先把分支推送到你的遠端 fork然後開 Pull Request。
```bash
git push --set-upstream origin [branch-name]
```
上述指令會在你的 forked repo 建立分支。
### 🤝 **協作技能檢測:準備好與別人合作了嗎?**
**來看看你對協作的感覺:**
- 對 fork 與 pull request 的概念是否明白?
- 有關使用分支工作,你還想練習什麼?
- 對貢獻別人專案感到多大信心?
```mermaid
mindmap
root((Git 協作))
Branching
Feature branches
Bug fix branches
Experimental work
Pull Requests
Code review
Discussion
Testing
Best Practices
Clear commit messages
Small focused changes
Good documentation
```
> **信心加油站**:你敬佩的每位開發者,在提出第一個 PR 時都曾緊張。GitHub 社區對新手非常友好!
1. **開 PR**。接著要開 pull request。到你 fork 的 repo 頁面上GitHub 會提示你是否建立新 PR點擊即可進入介面修改 commit 標題和敘述。原專案維護者會看到,並 _希望_ 會合併你的 PR。從此你成為一名貢獻者耶 :)
💡 **現代提示**:也可使用 GitHub CLI 建立 PR
```bash
gh pr create --title "Your PR title" --body "Description of changes"
```
🔧 **PR 最佳實踐**
- 用關鍵字連結相關 issue如 "Fixes #123"
- UI 改動補充截圖
- 指定特定審查者
- 進行中可用草稿 PR
- 發出審查請求前確保所有 CI 通過
1. **清理**。成功合併 PR 後,進行 _清理_ 是良好做法。你需要清理本地分支和推送到 GitHub 的分支。首先,使用以下命令在本地刪除它:
```bash
git branch -d [branch-name]
```
接著請到該 fork 的 GitHub 頁面,刪除你剛剛推送過去的遠端分支。
`Pull request`拉取請求聽起來怪怪的因為你真正想做的是把變更推送到專案裡。但維護者專案擁有者或核心團隊需要先審核你的變更才會將它合併進專案的「main」分支所以你其實是在請求維護者做變更決定。
拉取請求是用來比較和討論分支所引入差異的地方,可以包含審核、評論、整合測試等等。一個好的拉取請求大致遵循和提交說明相同的規則。如果你的工作是修復某個問題,可以加上 issue 的參考,格式是 `#` 後面接問題號碼。例如 `#97`
🤞希望所有檢查通過,且專案擁有者能將你的變更合併進專案🤞
用以下指令更新你當前的本地工作分支,將 GitHub 上對應遠端分支的所有新提交拉下來:
`git pull`
## 貢獻開源專案(你改變世界的機會!)
準備好迎接讓你驚嘆的新世界了嗎?🤯 來談談如何參與開源貢獻吧 —— 光是想著能和你分享這些內容我就起雞皮疙瘩了!
這是你成為真正偉大事物一部分的機會。想像一下,改善數百萬開發者每天使用的工具,或者修正你朋友們都愛用的應用程式的錯誤。這不只是一場夢想 —— 這就是開源貢獻的精髓!
讓我每次想到都感到顫慄的是:你所學的每個工具 —— 你的程式碼編輯器、我們將探索的框架,甚至你正在閱讀本文的瀏覽器 —— 都是由像你一樣的人首次貢獻開始。那位打造你最愛 VS Code 擴充功能的優秀開發者?他們曾經也是充滿忐忑地按下「建立拉取請求」按鈕的初學者,就像你現在一樣。
最美好的部分是開源社群就像網路上最大的群體擁抱。大多數專案都積極尋找新手並且有標示為「good first issue」的議題就是專門為你這樣的初學者準備維護者看到新貢獻者時會非常興奮因為他們記得自己也從第一次踏出第一步開始。
```mermaid
flowchart TD
A[🔍 探索 GitHub] --> B[🏷️ 尋找 "good first issue"]
B --> C[📖 閱讀貢獻指南]
C --> D[🍴 分叉倉庫]
D --> E[💻 設置本地環境]
E --> F[🌿 建立功能分支]
F --> G[✨ 做出你的貢獻]
G --> H[🧪 測試你的更改]
H --> I[📝 撰寫清晰提交訊息]
I --> J[📤 推送並建立 PR]
J --> K[💬 參與反饋交流]
K --> L[🎉 合併成功!你成為了貢獻者!]
L --> M[🌟 尋找下一個議題]
style A fill:#e1f5fe
style L fill:#c8e6c9
style M fill:#fff59d
```
你不只是學寫程式,更是在準備加入一個每天早上醒來就思考「我們怎麼讓數位世界變得更好一點?」的全球創作者大家庭。歡迎加入!🌟
首先,我們來找一個你感興趣並想貢獻變更的 GitHub 儲存庫repo。你需要將它的內容複製到你的電腦。
✅ 找到「新手友好」的 repo 一個好方法是[使用 'good-first-issue' 標籤搜尋](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/)。
![Copy a repo locally](../../../../translated_images/clone_repo.5085c48d666ead57.hk.png)
複製代碼有好幾種方式。最常見的是使用 HTTPS、SSH 或 GitHub CLI命令列工具「克隆」該儲存庫內容。
打開你的終端機並這樣克隆儲存庫:
```bash
# 使用 HTTPS
git clone https://github.com/ProjectURL
# 使用 SSH需要設定 SSH 金鑰)
git clone git@github.com:username/repository.git
# 使用 GitHub CLI
gh repo clone username/repository
```
要在專案內工作,切換到正確資料夾:
`cd ProjectURL`
你也可以開啟整個專案:
- **[GitHub Codespaces](https://github.com/features/codespaces)** - GitHub 的雲端開發環境,可在瀏覽器中使用 VS Code
- **[GitHub Desktop](https://desktop.github.com/)** - 用於 Git 操作的圖形使用者介面應用程式
- **[GitHub.dev](https://github.dev)** - 任何 GitHub repo 按下 `.` 鍵即可在瀏覽器開啟 VS Code
- 搭配 GitHub 拉取請求擴充功能的 VS Code
最後,你可以下載壓縮檔形式的代碼。
### 關於 GitHub 的更多有趣事
你可以對任何公開 repo 加星標、訂閱觀察和/或「fork」它們。加星的 repo 可以在右上角的下拉選單找到,這就像書籤,但用於程式碼。
專案有譯題追蹤器,通常是在 GitHub 的「Issues」標籤頁除非另有說明用來討論專案相關問題。拉取請求標籤是用來討論和審查正在進行的改動。
有些專案還會在論壇、郵件列表或聊天頻道(像 Slack、Discord 或 IRC進行討論。
🔧 **現代 GitHub 功能**
- **GitHub Discussions** - 內建的社群討論區
- **GitHub Sponsors** - 財務支持維護者
- **Security tab** - 漏洞報告與安全公告
- **Actions tab** - 查看自動化工作流程及 CI/CD 管線
- **Insights tab** - 關於貢獻者、提交和專案健康度的分析
- **Projects tab** - GitHub 內建的專案管理工具
✅ 四處逛逛你的新 GitHub repo試試修改設定、添加資訊、建立專案如看板、設定 GitHub Actions 來自動化。你能做的事非常多!
---
## 🚀 挑戰
好了,現在是測試你閃亮新 GitHub 超能力的時刻了!🚀 這項挑戰會讓一切以最令人滿足的方式連結起來:
找一個朋友(或那位一直問你在做什麼「電腦東西」的家人)一起展開協同編程冒險吧!這就是魔法所在 —— 建立一個專案,讓他們 fork建立一些分支像專業人士一樣合併變更。
說實話 —— 你們絕對會笑翻(尤其是當你們試圖同時更改同一行),可能還會被搞得抓頭困惑,但你一定會體驗到那些令人驚豔的「啊哈!」時刻,讓所有學習都變得值得。此外,與人分享第一次成功合併有著特別的意義 —— 它像是在慶祝你已走多遠!
還沒有編程夥伴完全沒問題GitHub 社群熱情友善他們都記得當初自己也是新手。找標記「good first issue」的儲存庫 —— 這基本上是在說「嘿,新手,來和我們一起學吧!」多棒啊!
## 課後小測
[Post-lecture quiz](https://ff-quizzes.netlify.app/web/en/)
## 複習並持續學習
呼!🎉 看你多棒 —— 你剛剛像冠軍一樣征服了 GitHub 基礎!如果你現在覺得腦子有點爆炸,那是很正常,說實話這也是好事。你剛剛學到的工具,是我當初花了好幾週才習慣的。
Git 和 GitHub 非常強大(真的很強),我認識的每位開發者 —— 包括現在看起來像魔法師的那些 —— 都必須練習和摸索一段時間才有突破。你能順利完成這堂課,代表你已經踏上掌握開發者工具箱中最重要工具的旅程。
以下是一些超棒的資源,幫助你練習並變得更棒:
- [貢獻開源軟體指南](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution) —— 你改變世界的路線圖
- [Git 速查表](https://training.github.com/downloads/github-git-cheat-sheet/) —— 方便快速查詢!
別忘了:練習促成進步,而非完美!你使用 Git 和 GitHub 越多就越自然。GitHub 創建了很多有趣的互動課程,讓你在安全環境中練習:
- [GitHub 入門](https://github.com/skills/introduction-to-github)
- [使用 Markdown 交流](https://github.com/skills/communicate-using-markdown)
- [GitHub Pages](https://github.com/skills/github-pages)
- [管理合併衝突](https://github.com/skills/resolve-merge-conflicts)
**想更冒險一點?試試這些現代工具:**
- [GitHub CLI 文件](https://cli.github.com/manual/) —— 讓你感覺像指令列大師
- [GitHub Codespaces 文件](https://docs.github.com/en/codespaces) —— 雲端程式編輯體驗!
- [GitHub Actions 文件](https://docs.github.com/en/actions) —— 自動化一切
- [Git 最佳實踐](https://www.atlassian.com/git/tutorials/comparing-workflows) —— 升級你的工作流程
## GitHub Copilot Agent 挑戰 🚀
使用 Agent 模式完成以下挑戰:
**說明:** 建立一個合作式網頁開發專案,展示你在本課程學到的完整 GitHub 工作流程。這個挑戰幫助你練習儲存庫建立、協作特性,以及現代 Git 工作流程,在實際場景中操練。
**提示:** 建立一個新的公開 GitHub 儲存庫名為「Web Development Resources網頁開發資源」。儲存庫應包含結構良好的 README.md列出有用的網頁開發工具和資源依照不同類別HTML、CSS、JavaScript 等)組織。按社群標準設定儲存庫,包括授權、貢獻指南和行為準則。至少建立兩個功能分支:一個新增 CSS 資源、另一個新增 JavaScript 資源。分別在各分支做有描述的提交,然後發出拉取請求合併回 main。啟用 GitHub 功能,例如 Issues、Discussions並建立基本的 GitHub Actions 工作流程做自動化檢查。
## 作業
你的任務(如果你願意接受):完成 GitHub Skills 的 [GitHub 入門](https://github.com/skills/introduction-to-github) 課程。這個互動課程讓你在安全且有指導的環境中練習所學。完成後還能獲得酷炫徽章!🏅
**想挑戰更多?**
- 為 GitHub 帳號設定 SSH 認證(不用再輸入密碼!)
- 嘗試使用 GitHub CLI 執行日常 Git 操作
- 建立一個有 GitHub Actions 工作流程的儲存庫
- 嘗試用雲端編輯器 GitHub Codespaces 開啟本儲存庫
---
## 🚀 你的 GitHub 精通時間表
### ⚡ **接下來 5 分鐘你可以做的事**
- [ ] 給這個儲存庫和另外三個你感興趣的專案加星標
- [ ] 為你的 GitHub 帳戶設定雙重身份驗證
- [ ] 為你第一個儲存庫創建簡單的 README
- [ ] 追蹤 5 位令你受啟發的開發者
### 🎯 **接下來一小時你可以完成的目標**
- [ ] 完成課後小測並反思你的 GitHub 旅程
- [ ] 設定 SSH 金鑰,實現免密碼登入 GitHub
- [ ] 做出你的第一個有意義的提交並寫好提交訊息
- [ ] 探索 GitHub「Explore」分頁發掘熱門專案
- [ ] 練習 fork 一個儲存庫並做小改動
### 📅 **你的一週 GitHub 冒險**
- [ ] 完成 GitHub Skills 課程GitHub 入門、Markdown
- [ ] 對開源專案提出第一個拉取請求
- [ ] 設置 GitHub Pages 網站展示你的作品
- [ ] 參與你感興趣專案的 GitHub Discussions
- [ ] 建立具社群標準README、授權等的儲存庫
- [ ] 嘗試使用 GitHub Codespaces 進行雲端開發
### 🌟 **你的一月蛻變**
- [ ] 對 3 個不同開源項目做出貢獻
- [ ] 輔導一位 GitHub 新手(回饋社群!)
- [ ] 設定 GitHub Actions 自動化工作流程
- [ ] 建立展示 GitHub 貢獻的作品集
- [ ] 參加 Hacktoberfest 或類似社群活動
- [ ] 成為自己開源專案的維護者,讓他人貢獻
### 🎓 **最終 GitHub 精通回顧**
**慶祝你走過的路:**
- 你最喜歡使用 GitHub 的哪個部分?
- 哪個協作功能最讓你興奮?
- 你現在對參與開源貢獻有多大信心?
- 你想要貢獻的第一個專案是什麼?
```mermaid
journey
title 你的 GitHub 信心之旅
section 今日
緊張: 3: 你
好奇: 4: 你
興奮: 5: 你
section 本週
練習中: 4: 你
貢獻中: 5: 你
聯繫中: 5: 你
section 下個月
合作中: 5: 你
領導中: 5: 你
啟發他人: 5: 你
```
> 🌍 **歡迎加入全球開發者社群!** 你現在擁有和全球數百萬開發者合作的工具。你的第一次貢獻看似微小,但別忘了 —— 每個重大開源專案都是從某個人首次提交開始的。問題不是你是否能產生影響,而是什麼令人驚嘆的專案將率先受益於你獨特的視角!🚀
記住:每位專家都曾是新手。你可以的!💪
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們雖力求準確,但請注意自動翻譯可能存在錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。因使用本翻譯所產生之任何誤解或誤讀,我們概不負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->