這份指南將帶你完成從建立 GitHub repository 到設定 SSH 和上傳專案的所有必要步驟,並解釋每個步驟背後的原因,幫助你理解每個動作的目的。
Windows:
# 從官網下載安裝包
https://git-scm.com/download/winmacOS:
# 使用 Homebrew 安裝
brew install gitLinux (Ubuntu/Debian):
sudo apt-get update
sudo apt-get install git為什麼需要安裝 Git? Git 是分散式版本控制系統,它能追蹤檔案的變更歷史,讓你輕鬆回溯先前版本,並能與他人協作處理同一專案。
git config --global user.name "你的名字"
git config --global user.email "你的電子郵件"為什麼需要這樣設定? 這些資訊會附加在你的每次提交中,幫助識別誰完成了特定更改。這在團隊協作中特別重要。
git config --global init.defaultBranch main為什麼設定預設分支名稱?
近年來,許多開發社群已從使用 master 轉向使用 main 作為預設分支名稱,這是一種更具包容性的做法。
- 前往 GitHub 官網
- 點擊「Sign up」(註冊)
- 依照指示完成註冊流程
為什麼選擇 GitHub? GitHub 是全球最大的程式碼託管平台,提供許多協作工具、開源專案互動,以及整合 CI/CD 的能力,幫助開發者管理與分享程式碼。
- 前往 GitHub 的設定頁面
- 選擇「Password and authentication」(密碼與認證)
- 依照指示設定雙因素驗證
為什麼設定 2FA? 雙因素驗證為你的帳號提供額外一層的安全保護,即使密碼洩漏,未經授權的人也無法輕易存取你的帳號。
ls -la ~/.sshssh-keygen -t ed25519 -C "你的電子郵件"為什麼使用 ED25519? ED25519 是一種現代的加密演算法,提供更佳的安全性與效能,相較於較舊的 RSA 演算法。
Windows:
# 啟動 SSH 代理
eval "$(ssh-agent -s)"
# 加入 SSH 金鑰
ssh-add ~/.ssh/id_ed25519macOS/Linux:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519- 複製你的 SSH 公鑰
cat ~/.ssh/id_ed25519.pub
# 複製輸出的內容- 前往 GitHub 的設定頁面
- 選擇「SSH and GPG keys」(SSH 和 GPG 金鑰)
- 點擊「New SSH key」(新增 SSH 金鑰)
- 填寫標題並貼上你的公鑰
- 點擊「Add SSH key」(新增 SSH 金鑰)
為什麼使用 SSH 而非 HTTPS?
- 更安全:SSH 提供加密連接
- 更方便:無需每次推送時輸入密碼
- 更適合頻繁操作:減少認證步驟,提高工作效率
ssh -T git@github.com如果成功,你會看到類似這樣的訊息:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
- 登入 GitHub
- 點擊右上角的「+」圖示,選擇「New repository」(新增儲存庫)
- 輸入儲存庫名稱、描述
- 選擇是否為公開或私有
- 可選:初始化 README、.gitignore 和授權條款
- 點擊「Create repository」(建立儲存庫)
設定選項解釋:
- Public vs Private:公開儲存庫任何人都能看到,私有儲存庫只有你和被授權的協作者可見
- README:簡介專案的文件
- .gitignore:指定 Git 應忽略的檔案類型
- 授權條款:定義如何允許他人使用你的程式碼
git clone git@github.com:你的使用者名稱/儲存庫名稱.git為什麼要克隆? 克隆建立了遠端儲存庫的本地複本,讓你可以在自己的電腦上工作,然後再將變更推送回 GitHub。
如果你已經有一個本地專案想上傳到 GitHub:
# 切換到你的專案目錄
cd 你的專案路徑
# 初始化 Git
git init
# 添加 GitHub 儲存庫作為遠端來源
git remote add origin git@github.com:你的使用者名稱/儲存庫名稱.git# 查看檔案狀態
git status
# 將檔案添加到暫存區
git add 檔案名稱 # 添加特定檔案
git add . # 添加所有變更的檔案
# 提交變更
git commit -m "描述這次變更的訊息"
# 將變更推送到 GitHub
git push -u origin main # 第一次推送
git push # 之後的推送為什麼分為暫存和提交兩個步驟? 這種設計允許你選擇性地決定哪些變更要包含在下一次提交中,提供更精確的版本控制。
# 創建新分支
git branch 分支名稱
# 切換到該分支
git checkout 分支名稱
# 或一步完成創建與切換
git checkout -b 分支名稱
# 推送新分支到 GitHub
git push -u origin 分支名稱
# 合併分支
git checkout main # 先切換到目標分支
git merge 來源分支名稱 # 將來源分支合併到當前分支為什麼使用分支? 分支讓你能夠同時處理多項功能或修復,互不影響,然後再視需要將它們合併。這是團隊協作的關鍵功能。
# 從遠端儲存庫獲取更新
git fetch
# 將遠端變更合併到當前分支
git pull
# 或明確指定
git pull origin main…or create a new repository on the command line
echo "# RISC_V_CPU" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin git@github.com:Rissun5779/RISC_V_CPU.git git push -u origin main
…or push an existing repository from the command line
git remote add origin git@github.com:Rissun5779/RISC_V_CPU.git git branch -M main git push -u origin main
當兩個分支修改了同一個檔案的同一部分時,會發生合併衝突。Git 會標記衝突區域:
<<<<<<< HEAD
你的變更
=======
其他分支的變更
>>>>>>> branch-name
解決步驟:
- 打開有衝突的檔案
- 找到並編輯衝突區域,決定保留什麼內容
- 移除衝突標記
- 儲存檔案
- 執行
git add標記為已解決 - 完成合併
git commit
# 復原工作目錄中的變更
git checkout -- 檔案名稱
# 復原已暫存的變更
git reset HEAD 檔案名稱
# 復原最近一次提交
git reset --soft HEAD~1# 簡單查看提交歷史
git log
# 圖形化顯示分支歷史
git log --graph --oneline --all.gitignore 檔案指定 Git 應忽略的檔案模式。例如:
# 忽略編譯後的檔案
*.o
*.out
# 忽略日誌檔案
*.log
# 忽略特定目錄
node_modules/
dist/
build/
# 忽略環境檔案
.env
.env.local
- 經常提交小的變更,而非偶爾提交大量變更
- 撰寫清晰的提交訊息
- 使用分支開發新功能
- 經常從主分支更新你的功能分支
- 使用有意義的分支命名
- 設定適當的 .gitignore 檔案
- 在合併前執行程式碼審查
這份指南涵蓋了從設定 Git 與 GitHub 到管理專案的基本流程。隨著你對這些工具的熟悉,你可以探索更多進階功能,如 GitHub Actions、Pull Requests 和 GitHub Pages 等。
祝你的專案開發順利!