Git & GitHub¶

2024 IM1003 Programming Design TA Workshop 梁安哲 2024/11/28

Introduction¶

何謂 "版本控制?"¶

大家在寫程式的時候,會隨著開發的進度,不停改動程式碼

一個常見的 PD 作業流程圖¶

各種管理問題¶

  1. 如何維護第一到第七版程式?
  2. 如何檢視第一到第七版程式的變化?
  3. 如果電腦突然壞掉,怎麼拿回程式的備份?
  4. 如果很多人一起寫一份大作業,怎麼紀錄每個人更改了哪些部分?
  5. 如果很多人一起寫一份大作業,怎麼紀錄每個人更改的部分相容?
  6. 如果你的程式是一項賣錢的產品,如何自動把程式交貨到使用者手上?

...族繁不及備載

版本管理工具¶

以 Git 最為廣為使用,是現代軟體工程師的基本工具(之一)。

Preparation¶

安裝 Git¶

  • Windows (超級麻煩,各助教請加油)
  • macOS brew install git
  • Ubuntu sudo apt get git

驗證安裝成功¶

安裝完成之後,在 terminal 輸入 git -v 應該要能得到類似下圖的輸出

下載課程資料¶

在 terminal 輸入 git clone https://github.com/namwoam/git-workshop.git

重置 repository¶

repository 是 git 管理程式碼的界線,可以想像成專案的單位

在 git-workshop 輸入 git reset --hard 28eea111f8e3b1e4d04e6aed5ecafa246690ab14

你的資料夾應該要長得像這樣

Git add & commit¶

指令們¶

  • git add <filename> 或 git add . 會讓 git 追蹤該檔案的更動
  • git commit -m <message> 會讓 git 紀錄所有檔案的變動,此次變動會以 message 標記

File status 示意圖¶

Commit history 示意圖¶

新增檔案¶

新增一個 main.cpp

#include <iostream>
int main(){
    std::cout << "Hello 超級貓貓男!" << std::endl;
    return 0;
}

紀錄變更¶

依序執行以下指令:

  1. git add main.cpp 紀錄 main.cpp 的更動
  2. git commit -m "add: add main.cpp" 提交更動

查看變更¶

在 VS Code 右側的 Source Control 應該會看到如下圖的 commit history

Git branch & merge¶

指令們¶

  • git branch <branch-name> 新增一個名為 branch-name 的分支
  • git checkout <branch-name> 切換到 branch-name 的分支
  • git merge <branch-name> 把 branch-name 上面的改動合併到現在的分支上

Merge 示意圖¶

Dev branch¶

依序執行

  1. git branch dev 會提示已經有該分支,因為我已經建好了
  2. git checkout dev 切換到 dev 分支
  3. git reset --hard d868cfd07ed06faead9e4057f5b684df987e8509 把 dev 分支還原

修改檔案¶

繼續執行 3. 修改 main.cpp

#include <iostream>

int multiply(int a, int b)
{
    return a * b;
}

int main()
{
    std::cout << "Hello 超級貓貓男!" << std::endl;
    std::cout << "5 * 6 = " << multiply(5, 6) << std::endl;
    return 0;
}
  1. git add main.cpp 紀錄檔案更動
  2. git commit -m "add: add multiply function" 提交更動

查看變更¶

在 VS Code 右側的 Source Control 應該會看到如下圖的 commit history

合併分支¶

依序執行

  1. git checkout main 切換到 main 分支
  2. git merge dev 將 dev 分支上的改動合併到 main 裡

GitHub¶

GitHub 和 Git 有什麼不一樣¶

GitHub 是一項由 Microsoft 提供的網路服務,會幫你管理 git repository 。可以免費在官網註冊新帳號。

創建新的 Repository¶

點選綠色的 new 按鈕。

下載 GitHub Desktop¶

下載連結(支援 Windows 和 macOS )

開啟之後介面會長這樣

可以在左上角 Add->Clone Repository 裡選擇剛剛創建的 repository ,下載到電腦裡,然後用 VS Code 開啟。

常用指令¶

  • git pull 把 GitHub 上的更動更新到自己的電腦裡
  • git push 把自己電腦裡的更動更新到 GitHub 上
  • git push --force 強制把自己電腦裡的更動更新到 GitHub 上
  • git reset --hard 把 repository 回復到上一個 commit 的狀態

更多學習資源¶

  1. Git 官方教學(繁體中文)
  2. Git 100 秒介紹影片
  3. Git&GitHub 介紹影片