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/mo/1-getting-started-lessons/2-github-basics/README.md

775 lines
40 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": "2025-11-25T17:34:27+00:00",
"source_file": "1-getting-started-lessons/2-github-basics/README.md",
"language_code": "mo"
}
-->
# GitHub 簡介
嗨,未來的開發者!👋 準備好加入全球數百萬的程式設計師行列了嗎?我真的很興奮向你介紹 GitHub——把它想像成程式員的社交媒體平台不過我們分享的不是午餐照片而是程式碼並一起創造令人驚嘆的事物
這件事真的讓我感到驚奇:你手機上的每個應用程式、你瀏覽的每個網站,以及你將學習使用的大多數工具,都是由開發者團隊在像 GitHub 這樣的平台上合作完成的。你喜歡的音樂應用程式?可能有人像你一樣為它做出了貢獻。你愛不釋手的遊戲?沒錯,可能也是透過 GitHub 合作完成的。而現在,你將學習如何成為這個令人驚嘆的社群的一部分!
我知道一開始可能會覺得有點多——老實說,我還記得第一次看 GitHub 頁面時心想「這到底是什麼意思?」但重點是:每個開發者都從你現在的位置開始。到這堂課結束時,你將擁有自己的 GitHub 儲存庫(把它想像成你在雲端的個人專案展示),並且你會知道如何保存你的工作、與他人分享,甚至為數百萬人使用的專案做出貢獻。
我們會一起踏上這段旅程,一步一步來。沒有匆忙,沒有壓力——只有你、我,以及一些即將成為你新好朋友的超酷工具!
![GitHub 簡介](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.mo.png)
> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
journey
title 您今天的 GitHub 冒險
section 設置
安裝 Git: 4: 您
建立帳戶: 5: 您
第一個儲存庫: 5: 您
section 掌握 Git
本地更改: 4: 您
提交與推送: 5: 您
分支: 4: 您
section 協作
分叉項目: 4: 您
拉取請求: 5: 您
開源: 5: 您
```
## 課前測驗
[課前測驗](https://ff-quizzes.netlify.app)
## 簡介
在我們深入到真正令人興奮的部分之前,先讓你的電腦準備好迎接 GitHub 的魔法吧!把這想像成在創作傑作之前整理你的藝術用品——準備好正確的工具會讓一切更順暢,也更有趣。
我會親自帶你完成每個設定步驟,我保證它看起來並沒有那麼可怕。如果有些東西一開始不太明白,那是完全正常的!我還記得第一次設置我的開發環境時,感覺就像在閱讀古代象形文字。每個開發者都曾經和你一樣,懷疑自己是否做對了。劇透一下:如果你在這裡學習,你已經做對了!🌟
在這堂課中,我們將涵蓋:
- 追蹤你在電腦上的工作
- 與他人合作專案
- 如何為開源軟體做出貢獻
### 先決條件
讓我們準備好你的電腦迎接 GitHub 的魔法吧!別擔心——這個設定只需要做一次,然後你就可以為整個程式設計旅程做好準備。
好吧,讓我們從基礎開始!首先,我們需要檢查 Git 是否已經在你的電腦上。Git 基本上就像一個超級聰明的助手,記住你對程式碼所做的每一個改變——比每兩秒瘋狂按 Ctrl+S 好得多(我們都曾經這樣做過!)。
讓我們通過在終端機輸入這個魔法指令來看看 Git 是否已經安裝:
`git --version`
如果 Git 還沒有安裝,別擔心!只需前往 [下載 Git](https://git-scm.com/downloads) 並下載它。一旦安裝完成,我們需要正式介紹 Git 給你:
> 💡 **首次設定**:這些指令告訴 Git 你是誰。這些資訊將附加到你所做的每次提交中,所以選擇一個你願意公開分享的名字和電子郵件。
```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 是最知名的。
### 準備工作
你需要在本地電腦(筆記本或 PC上有一個包含程式碼專案的資料夾以及一個 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 比作寫給未來自己的情書。幾天、幾週或幾個月後閱讀你的提交訊息,你將能回憶起為什麼做出某個決定,或者「回滾」某個改變——前提是你寫了好的「提交訊息」。
```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[Fork & Clone]
I -->|否| D
J --> K[建立分支]
K --> L[進行更改]
L --> M[Pull Request]
M --> N[🎉 貢獻完成!]
style A fill:#fff59d
style H fill:#c8e6c9
style N fill:#ff4081,color:#fff
```
### 任務:創建你的第一個儲存庫!
> 🎯 **你的任務(我真的為你感到興奮!)**:我們將一起創建你的第一個 GitHub 儲存庫!到我們完成時,你將擁有自己的小角落,存放你的程式碼,並且你將完成你的第一次「提交」(這是開發者用語,指以非常聰明的方式保存你的工作)。
>
> 這真的是一個特別的時刻——你即將正式加入全球開發者社群!我仍然記得創建我的第一個儲存庫時的激動,心想「哇,我真的在做這件事!」
讓我們一起一步步完成這次冒險。每個部分都慢慢來——匆忙是沒有獎勵的,我保證每一步都會有意義。記住,每個你崇拜的程式設計明星曾經都坐在你現在的位置,準備創建他們的第一個儲存庫。這是不是很酷?
> 查看影片
>
> [![Git 和 GitHub 基礎影片](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. **永久保存你的工作**(進行你的第一次提交!):
```bash
git commit -m "first commit"
```
**🎉 恭喜!你剛剛完成了你的第一次提交!**
**這裡剛剛發生了什麼:**
- Git 在這個確切的時刻對所有暫存文件拍了一個「快照」
- 你的提交訊息「first commit」解釋了這個保存點的內容
- Git 給這個快照分配了一個唯一的 ID讓你以後可以隨時找到它
- 你正式開始追蹤你的專案歷史了!
> 💡 **未來的提交訊息**:對於你的下一次提交,請更具描述性!不要用「更新了一些東西」,試試「添加了首頁的聯絡表單」或「修復了導航菜單的錯誤」。你的未來自己會感謝你!
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` 與世界分享 🚀
- 重複以上步驟——真的,這會變得像呼吸一樣自然!
我喜歡這個工作流程,因為它就像在玩電子遊戲時有多個存檔點。做了一個你喜歡的更改?提交它!想嘗試一些冒險的東西?沒問題——如果事情出錯,你總是可以回到上次提交!
> 💡 **提示**:你可能還想採用 `.gitignore` 文件,防止你不想追蹤的文件出現在 GitHub 上——例如存放在同一資料夾但不適合公開儲存庫的筆記文件。你可以在 [.gitignore templates](https://github.com/github/gitignore) 找到 `.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 工作流程
考慮採用以下現代化做法:
- **標準化提交**:使用標準化的提交訊息格式,例如 `feat:`、`fix:`、`docs:` 等。了解更多請訪問 [conventionalcommits.org](https://www.conventionalcommits.org/)
- **原子提交**:讓每次提交代表一個單一的邏輯更改
- **頻繁提交**:經常提交,並使用描述性訊息,而不是大而不頻繁的提交
#### 提交訊息
一條好的 Git 提交主題行應完成以下句子:
如果應用,這次提交將 <你的主題行>
主題使用命令式現在時態:"change" 而不是 "changed" 或 "changes"。
在主題中,正文(可選)也使用命令式現在時態。正文應包括更改的動機,並與之前的行為形成對比。你是在解釋 `為什麼`,而不是 `如何`
✅ 花幾分鐘瀏覽 GitHub。你能找到一條非常棒的提交訊息嗎你能找到一條非常簡單的嗎你認為在提交訊息中傳達哪些信息最重要和有用
## 與他人合作(最有趣的部分!)
準備好你的帽子,因為 GitHub 的魔力就在這裡!🪄 你已經掌握了管理自己的程式碼,但現在我們要深入我最喜歡的部分——與來自世界各地的驚人人才合作。
想像一下:你明天醒來,發現東京的一位開發者在你睡覺時改進了你的程式碼。然後柏林的一位開發者修復了你一直卡住的錯誤。到了下午,聖保羅的一位開發者添加了一個你從未想到的功能。這不是科幻小說——這只是 GitHub 世界裡的普通一天!
讓我真正興奮的是,你即將學到的合作技能?這些正是 Google、Microsoft 和你最喜歡的初創公司每天使用的工作流程。你不僅僅是在學習一個酷工具——你是在學習讓整個軟件世界一起工作的秘密語言。
真的,當你第一次體驗到有人合併你的拉取請求的快感時,你就會明白為什麼開發者對開源如此熱情。這就像參與世界上最大、最有創意的團隊項目!
> 查看影片
>
> [![Git 和 GitHub 基礎影片](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. **分叉你的儲存庫** 你可能希望人們 _分叉_ 你的項目。分叉意味著在他們的 GitHub 個人檔案上創建你的儲存庫的副本。
1. **克隆**。接著他們會將項目克隆到本地機器。
1. **創建分支**。你會希望要求他們為自己的工作創建一個 _分支_
1. **專注於一個區域的更改**。要求貢獻者一次專注於一件事——這樣你能 _合併_ 他們工作的可能性更高。想像他們寫了一個錯誤修復,添加了一個新功能,並更新了幾個測試——如果你只想或只能實施其中的 2 個或 1 個更改怎麼辦?
✅ 想像一個分支在撰寫和交付良好程式碼中特別重要的情況。你能想到哪些使用場景?
> 注意,成為你想看到的改變,並為自己的工作創建分支。你所做的任何提交都將在你當前 "檢出" 的分支上完成。使用 `git status` 查看是哪個分支。
讓我們來看看貢獻者的工作流程。假設貢獻者已經 _分叉__克隆_ 了儲存庫,因此他們有一個準備好工作的 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"
```
> ⚠️ **提交訊息質量**:確保你給提交起一個好名字,既為自己,也為你幫助的儲存庫維護者。具體說明你改變了什麼!
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 意味著兩件事。將你的分支推送到你的儲存庫,然後打開一個 PR拉取請求
```bash
git push --set-upstream origin [branch-name]
```
上述指令會在你的分叉儲存庫上創建分支。
### 🤝 **合作技能檢查:準備好與他人合作了嗎?**
**看看你對合作的感覺如何:**
- 分叉和拉取請求的概念現在對你來說是否清晰?
- 關於使用分支,你最想多練習什麼?
- 你對為別人的項目做貢獻感到多大程度的舒適?
```mermaid
mindmap
root((Git 協作))
Branching
功能分支
修復錯誤分支
實驗性工作
Pull Requests
代碼審查
討論
測試
Best Practices
清晰的提交訊息
小而專注的更改
良好的文檔
```
> **信心提升**你所崇拜的每一位開發者都曾對自己的第一次拉取請求感到緊張。GitHub 社區對新手非常友好!
1. **打開一個 PR**。接下來,你需要打開一個 PR。你可以通過導航到 GitHub 上的分叉儲存庫來完成。你會在 GitHub 上看到一個指示,詢問你是否想創建一個新的 PR點擊它你會進入一個界面可以更改提交訊息標題給它一個更合適的描述。現在你分叉的儲存庫的維護者會看到這個 PR_希望_ 他們會欣賞並 _合併_ 你的 PR。你現在是一名貢獻者太棒了 :)
💡 **現代提示**:你也可以使用 GitHub CLI 創建 PR
```bash
gh pr create --title "Your PR title" --body "Description of changes"
```
🔧 **PR 的最佳做法**
- 使用關鍵字(例如 "Fixes #123")鏈接相關問題
- 為 UI 更改添加截圖
- 請求特定的審查者
- 使用草稿 PR 表示正在進行的工作
- 確保所有 CI 檢查通過後再請求審查
1. **清理**。在成功合併 PR 後,進行清理工作是一個良好的習慣。你需要清理本地分支以及推送到 GitHub 的分支。首先,使用以下指令刪除本地分支:
```bash
git branch -d [branch-name]
```
接著,前往 GitHub 頁面,移除你剛剛推送的遠端分支。
`Pull request` 這個詞聽起來有點奇怪,因為實際上你是想將你的更改推送到專案中。但專案的維護者(專案擁有者)或核心團隊需要在合併到專案的 "main" 分支之前審核你的更改,因此你實際上是在向維護者請求一個更改的決定。
Pull request 是一個比較和討論分支所引入差異的地方,包含審核、評論、整合測試等功能。一個好的 pull request 大致遵循與提交訊息相同的規則。例如,當你的工作解決了一個問題時,你可以在問題追蹤器中引用該問題。這可以透過使用 `#` 加上問題編號來完成,例如 `#97`
🤞希望所有檢查都通過,並且專案擁有者合併你的更改到專案中🤞
更新你目前的本地工作分支,將 GitHub 上對應的遠端分支的所有新提交拉取下來:
`git pull`
## 貢獻開源專案(你的機會來了!)
準備好迎接一件會讓你大開眼界的事情嗎?🤯 讓我們來聊聊如何貢獻開源專案——光是想到要和你分享這些內容就讓我激動不已!
這是你成為某些非凡事物一部分的機會。想像一下,改進每天有數百萬開發者使用的工具,或者修復你朋友喜愛的應用程式中的一個 bug。這不僅僅是夢想——這就是開源貢獻的意義
每次想到這件事都讓我感到激動:你所學習的每一個工具——你的程式碼編輯器、我們將探索的框架,甚至你正在閱讀的瀏覽器——都始於某個人像你一樣,第一次貢獻的那一刻。那位開發者建立了你最喜歡的 VS Code 擴展?他們曾經也是一個初學者,手顫顫地點擊 "create pull request",就像你即將做的一樣。
最美妙的部分是:開源社群就像互聯網上最大的擁抱。大多數專案都積極尋找新手,並標記 "good first issue" 的問題,專門為像你這樣的人準備!維護者看到新貢獻者時真的會感到興奮,因為他們記得自己第一次踏出的那一步。
```mermaid
flowchart TD
A[🔍 探索 GitHub] --> B[🏷️ 尋找 "適合初學者的問題"]
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**)。你需要將其內容複製到你的電腦上。
✅ 找到 "適合初學者" 的儲存庫的一個好方法是 [透過標籤 'good-first-issue' 進行搜尋](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/)。
![本地複製儲存庫](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.mo.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 儲存庫中按下 `.` 鍵即可在瀏覽器中打開 VS Code
- **VS Code** 搭配 GitHub Pull Requests 擴展
最後,你也可以下載壓縮的資料夾。
### 關於 GitHub 的一些有趣事實
你可以在 GitHub 上對任何公共儲存庫進行加星、關注和/或 "fork"。你可以在右上角的下拉選單中找到你加星的儲存庫。這就像書籤,但是針對程式碼。
專案通常有一個問題追蹤器,大多數情況下在 GitHub 的 "Issues" 標籤中,除非另有說明,人們在這裡討論與專案相關的問題。而 Pull Requests 標籤則是人們討論和審核正在進行的更改的地方。
專案可能還會在論壇、郵件列表或像 Slack、Discord 或 IRC 這樣的聊天頻道中進行討論。
🔧 **現代 GitHub 功能**
- **GitHub Discussions** - 內建的社群對話論壇
- **GitHub Sponsors** - 財務支持維護者
- **Security 標籤** - 漏洞報告和安全建議
- **Actions 標籤** - 查看自動化工作流程和 CI/CD 管道
- **Insights 標籤** - 關於貢獻者、提交和專案健康狀況的分析
- **Projects 標籤** - GitHub 的內建專案管理工具
✅ 瀏覽你的新 GitHub 儲存庫並嘗試一些操作,例如編輯設定、向儲存庫添加資訊、創建專案(例如看板),以及設置 GitHub Actions 進行自動化。你可以做的事情非常多!
---
## 🚀 挑戰
好了,現在是時候測試你的 GitHub 超能力了!🚀 這是一個挑戰,會讓你在最滿足的方式中理解所有內容:
找一位朋友(或者那位總是問你在搞什麼 "電腦東西" 的家人)一起展開一場合作編程冒險!這就是真正的魔法所在——創建一個專案,讓他們 fork 它,創建一些分支,並像專業人士一樣合併更改。
我不會騙你——你可能會在某些時候笑出來(尤其是當你們都試圖更改同一行時),可能會抓抓頭感到困惑,但你一定會有那些令人驚嘆的 "原來如此!" 的時刻,讓所有的學習都值得。更棒的是,與他人分享第一次成功合併的那一刻是非常特別的——這就像在慶祝你走了多遠!
還沒有編程夥伴完全沒問題GitHub 社群充滿了非常友好的成員,他們記得自己曾經是新手。尋找標有 "good first issue" 的儲存庫——它們基本上是在說 "嘿,初學者,來和我們一起學習吧!" 這是不是很棒?
## 課後測驗
[課後測驗](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 儲存庫,用於一個簡單的 "網頁開發資源" 專案。儲存庫應包含一個結構良好的 README.md 文件列出有用的網頁開發工具和資源按類別HTML、CSS、JavaScript 等)組織。設置儲存庫,包含適當的社群標準,例如許可證、貢獻指南和行為準則。創建至少兩個功能分支:一個用於添加 CSS 資源,另一個用於 JavaScript 資源。向每個分支提交描述性提交訊息,然後創建 pull request 將更改合併回 main。啟用 GitHub 功能,例如 Issues、Discussions並設置基本的 GitHub Actions 工作流程進行自動檢查。
## 作業
你的任務,如果你選擇接受:完成 [GitHub 入門](https://github.com/skills/introduction-to-github) 課程。這個互動課程將讓你在安全、引導的環境中練習你所學到的一切。此外,完成後你還會獲得一個酷炫的徽章!🏅
**準備好迎接更多挑戰?**
- 為你的 GitHub 帳戶設置 SSH 驗證(再也不用密碼了!)
- 嘗試使用 GitHub CLI 進行日常 Git 操作
- 創建一個包含 GitHub Actions 工作流程的儲存庫
- 探索 GitHub Codespaces打開這個儲存庫進行雲端編輯
---
## 🚀 你的 GitHub 精通時間表
### ⚡ **接下來 5 分鐘內可以做的事情**
- [ ] 為這個儲存庫和其他 3 個你感興趣的專案加星
- [ ] 為你的 GitHub 帳戶設置雙重身份驗證
- [ ] 為你的第一個儲存庫創建一個簡單的 README
- [ ] 關注 5 位讓你感到啟發的開發者
### 🎯 **這一小時內可以完成的事情**
- [ ] 完成課後測驗並反思你的 GitHub 旅程
- [ ] 設置 SSH 密鑰以進行無密碼的 GitHub 驗證
- [ ] 創建你的第一個有意義的提交,並附上出色的提交訊息
- [ ] 探索 GitHub 的 "Explore" 標籤,發現熱門專案
- [ ] 練習 fork 一個儲存庫並進行小更改
### 📅 **你的 GitHub 一周冒險**
- [ ] 完成 GitHub Skills 課程GitHub 入門、Markdown
- [ ] 向開源專案提交你的第一個 pull request
- [ ] 設置 GitHub Pages 網站展示你的作品
- [ ] 加入你感興趣的專案的 GitHub Discussions
- [ ] 創建一個包含適當社群標準README、許可證等的儲存庫
- [ ] 嘗試使用 GitHub Codespaces 進行雲端開發
### 🌟 **你的 GitHub 一個月轉型**
- [ ] 為 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 -->