【Git 入門教學】#04 遠端協作:GitHub 與 push/pull

Git 入門教學 #04 基礎測驗

測試你對 GitHub 與 push/pull 的基本理解,共 5 題。

1. 執行 git remote add origin https://github.com/user/repo.git 這個指令的用途是什麼?

2. 首次推送程式碼到 GitHub 時,應該使用哪個指令?

3. git pull 指令的作用是什麼?

4. 想要複製 GitHub 上的專案到本地電腦,應該使用哪個指令?

5. 使用 git clone 和下載 ZIP 檔案有什麼主要差異?

前言

在前三篇文章中,我們學會了在本地電腦上使用 Git 追蹤檔案變更。但真正的威力在於遠端協作——把程式碼放到雲端,讓團隊成員都能存取,也為自己的程式碼建立備份。

本篇將介紹如何使用 GitHub 作為遠端儲存庫,學會 push(推送)和 pull(拉取)操作。


GitHub 是什麼?

GitHub 是全球最大的程式碼託管平台,提供免費的 Git 遠端儲存庫服務。你可以把它想像成「程式碼的雲端硬碟」,但功能更強大:

  • 儲存你的 Git 儲存庫
  • 與他人協作開發
  • 追蹤 issues 和專案進度
  • 展示你的作品集

註冊 GitHub 帳號

  1. 前往 github.com
  2. 點擊「Sign up」
  3. 依照指示完成註冊(需要 email 驗證)

註冊完成後,你就有了一個可以存放程式碼的雲端空間。


在 GitHub 建立儲存庫

步驟說明

  1. 登入 GitHub 後,點擊右上角的「+」,選擇「New repository」
  2. 填寫儲存庫資訊:
    • Repository name:專案名稱(例如:my-first-project
    • Description:簡短描述(選填)
    • Public / Private:公開或私人
  3. 不要勾選「Add a README file」(我們已經有本地儲存庫了)
  4. 點擊「Create repository」

建立完成後,GitHub 會顯示一組指令,教你如何連結本地儲存庫。


git remote:連結遠端儲存庫

概念說明

git remote 用來管理遠端儲存庫的連結。最常見的遠端名稱是 origin,代表「原始來源」。

查看目前的遠端連結

git remote -v

如果還沒設定,這個指令不會顯示任何東西。

新增遠端連結

git remote add origin https://github.com/你的帳號/你的儲存庫.git
Code language: JavaScript (javascript)

這行指令的意思是:

  • git remote add:新增遠端連結
  • origin:遠端的名稱(習慣上用 origin)
  • 後面的 URL:GitHub 儲存庫的位址

驗證連結成功

git remote -v

應該會看到:

origin  https://github.com/你的帳號/你的儲存庫.git (fetch)
origin  https://github.com/你的帳號/你的儲存庫.git (push)
Code language: JavaScript (javascript)

git push:推送到遠端

首次推送

git push -u origin main

參數說明:

  • -u:設定上游(upstream)追蹤關係,之後只要打 git push 就好
  • origin:遠端名稱
  • main:要推送的分支

首次執行時,系統會要求你登入 GitHub(輸入帳號密碼或使用 token)。

後續推送

設定好上游追蹤後,之後只需要:

git push

Git 會自動推送到設定好的遠端分支。

推送的時機

養成好習慣:每次完成一個功能或修復一個 bug,commit 之後就 push:

git add .
git commit -m "完成登入功能"
git push
Code language: JavaScript (javascript)

git pull:拉取遠端更新

為什麼需要 pull?

當你在另一台電腦工作,或團隊成員推送了新的變更,你需要把遠端的更新拉回本地。

基本用法

git pull

這個指令會:

  1. 從遠端下載最新的變更
  2. 自動合併到你的本地分支

建議的工作流程

每次開始工作前,先拉取最新版本:

git pull              # 先拉取最新
# 進行你的修改...
git add .
git commit -m "你的變更"
git push              # 推送你的變更
Code language: PHP (php)

git clone:複製現有專案

使用場景

  • 第一次在新電腦上取得專案
  • 複製別人的開源專案來學習或貢獻

基本用法

git clone https://github.com/帳號/儲存庫.git
Code language: PHP (php)

這會在當前目錄建立一個新資料夾,包含完整的專案和 Git 歷史。

指定資料夾名稱

git clone https://github.com/帳號/儲存庫.git 我的資料夾
Code language: PHP (php)

clone vs download ZIP

方式 Git 歷史 可以 push/pull
git clone 保留完整歷史 可以
Download ZIP 沒有 不行

建議:永遠使用 git clone,不要下載 ZIP。


SSH vs HTTPS 認證

連接 GitHub 有兩種方式:

HTTPS(推薦新手使用)

https://github.com/帳號/儲存庫.git
Code language: JavaScript (javascript)
  • 設定簡單
  • 每次 push 需要輸入帳號密碼(或 Personal Access Token)
  • 適合剛入門的使用者

SSH

[email protected]:帳號/儲存庫.git
  • 需要先設定 SSH 金鑰
  • 設定完成後不需要每次輸入密碼
  • 適合每天都在使用 Git 的開發者

如何選擇?

情況 建議
剛開始學 Git HTTPS
覺得每次輸入密碼很煩 改用 SSH
公司有安全規範 依規範選擇

常見問題:push 被拒絕

問題描述

! [rejected]        main -> main (fetch first)
error: failed to push some refs to '...'
Code language: JavaScript (javascript)

原因

遠端有你本地沒有的變更(可能是你在另一台電腦推送的,或團隊成員的更新)。

解決方法

git pull    # 先拉取遠端變更
git push    # 再推送
Code language: PHP (php)

如果 pull 時有衝突,需要手動解決衝突後再 commit 和 push。

預防方式

養成習慣:開始工作前先 pull,結束工作後就 push


完整工作流程示範

情境:建立新專案並推送到 GitHub

# 1. 在本地建立專案
mkdir my-project
cd my-project
git init

# 2. 建立檔案並 commit
echo "# My Project" > README.md
git add README.md
git commit -m "初始化專案"

# 3. 在 GitHub 建立儲存庫(透過網頁)

# 4. 連結遠端並推送
git remote add origin https://github.com/你的帳號/my-project.git
git push -u origin main
Code language: PHP (php)

情境:在新電腦上繼續開發

# 1. 複製專案
git clone https://github.com/你的帳號/my-project.git
cd my-project

# 2. 進行修改
echo "新功能" >> README.md
git add .
git commit -m "新增功能說明"
git push
Code language: PHP (php)

本篇指令速查表

指令 用途
git remote -v 查看遠端連結
git remote add origin <URL> 新增遠端連結
git push -u origin main 首次推送並設定追蹤
git push 推送變更到遠端
git pull 拉取遠端更新
git clone <URL> 複製遠端儲存庫

Git 入門教學系列總結

恭喜你完成了這個系列!讓我們回顧一下學到的內容:

第一篇:什麼是 Git?為什麼要學?

  • Git 是版本控制系統,幫你追蹤檔案變更
  • 可以隨時回到任何歷史版本

第二篇:安裝與初始設定

  • 安裝 Git 並設定姓名和 email
  • 了解 Git 的基本設定

第三篇:基本操作

  • git init:初始化儲存庫
  • git add:加入暫存區
  • git commit:建立提交
  • git status:查看狀態
  • git log:查看歷史

第四篇:遠端協作(本篇)

  • GitHub 儲存庫的建立
  • git remote:管理遠端連結
  • git push:推送變更
  • git pull:拉取更新
  • git clone:複製專案

下一步學習建議

掌握基礎後,可以繼續學習:

  1. 分支(Branch)操作
    • git branch:建立分支
    • git checkout / git switch:切換分支
    • git merge:合併分支
  2. 進階技巧
    • .gitignore:忽略特定檔案
    • git stash:暫存未完成的工作
    • git revert / git reset:撤銷變更
  3. 團隊協作
    • Pull Request(PR)流程
    • Code Review
    • 分支策略(Git Flow、GitHub Flow)
  4. 圖形化工具
    • VS Code 內建 Git 功能
    • GitHub Desktop
    • GitKraken

結語

Git 是現代軟體開發的基礎技能。透過這個系列,你已經掌握了日常開發中 80% 會用到的 Git 操作。

記住,Git 最好的學習方式就是實際使用。從現在開始,每個專案都用 Git 追蹤吧!

遇到問題時,git status 是你最好的朋友——它會告訴你目前的狀態和下一步該做什麼。

祝你在程式開發的道路上一切順利!

Git 入門教學 #04 進階測驗

包含情境題和錯誤診斷題,測試你對遠端協作的深入理解。

1. [情境題] 你在公司電腦完成了一個功能並 push 到 GitHub。回家後想在自己的電腦繼續開發,但發現電腦上還沒有這個專案。你應該怎麼做?

2. [錯誤診斷] 你執行 git push 時看到以下錯誤訊息,最可能的原因和解決方法是什麼?

! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/...'
hint: Updates were rejected because the remote contains work that you do not have locally.

3. [情境題] 你剛在本地用 git init 建立了一個新專案,也完成了第一個 commit。接下來想把專案放到 GitHub 上。正確的操作順序是?

4. [概念理解] 關於 SSH 和 HTTPS 兩種連接 GitHub 的方式,以下哪個說法是正確的?

5. [最佳實踐] 在團隊協作的環境中,每天開始工作時的最佳做法是什麼?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *