---
# System prepended metadata

title: Git 版控教學
tags: [' Git', 資源, ' 版控']

---

---
title: Git 版控教學
tags: 資源, Git, 版控
---

# Git Course
# 0.1 The first step - for Windows
1. 下載 [Git](https://git-scm.com)
2. 下載 [Fork](https://git-fork.com/windows )
3. 按下鍵盤上的 windows key ![](https://i.imgur.com/0yhwNHZ.png? =150x)
4. 輸入 git bash

# 0.2 The first step - for Mac
1. 下載 [Fork](https://git-fork.com/home)
2. 執行電腦的 terminal

# 1. local (本地端)
## 1.1 terminal(Mac)/git bash(windows) command (終端機指令)
:::info
[XXXXXName] 的意思為 你想要創建的資料夾名稱，且需要注意：名稱盡量為英文
:::

- `ls`：列出當前目錄 (資料夾) 的 檔案/資料夾
    - `ls -la`: 列出當前目錄 (資料夾) 的 檔案/資料夾
- `cd [path]`: 切換資料夾
    - `cd ..`: 返回上一個資料夾
    - 可以在桌面將資料夾拖移至終端機
- `mkdir [folderName]` : 建立資料夾
- `touch [fileName]` : 建立檔案

## 1.2 git 指令
- `git init`: 讓資料夾進行版本控制，(相當於建立 git 的 repository 的意思)
- `git status`: 列出當前 git 的狀態
- `git revert`: 回到上一個 commit (版本) 的狀態，並保留當前的 commit (版本) 的紀錄
- `git branch [branchName]`: 創建一個名為 [branchName] 的分支
    - ![](https://i.imgur.com/ryyqvSa.png =400x)
- `git checkout [branchName]`: 切換到名為 [branchName] 的分支
- `git merge [branchName1]`: 將 [branchName1] 的 commit (版本) 合併到 [bramchName2]
## 1.3 git 流程介紹
![](https://i.imgur.com/YdljEg0.png? =400x)

1. working directory (工作區): 
    - 檔案或資料夾尚未被 Git 追蹤
    - 可以使用 `git add [fileName/folderName]`，讓 Git 追蹤其檔案/資料夾
2. staging area (暫存區): 
    - 檔案或資料夾已經被 Git 追蹤，即 Git 正在監控檔案是否修改
    - 此時可以使用 `git commit -m "YourDescription"`，即將目前 staging area (暫存區) 的打包成一個版本
    - PS: -m 為 message 的縮寫，即 用一句話說明此版本 的意思
3. localrepo (儲存區):
    - 儲存一個個版本

:::danger
簡單的版控流程：
1. 使用 `git add [fileName/folderName]`
2. 使用 `git commit -m "YourDescription"`
:::

# 2. remote (遠端)
## 2.1 GitHub
- [GitHub](https://github.com)

:::info
GitHub 是一個儲存著許多開源的原始碼的網站
:::

## 2.2 使用 GitHub
1. Sign Up (註冊) GitHub
2. 進入到首頁 ![](https://i.imgur.com/VorHJ67.png? =300x)
3. 創建新的專案 ![](https://i.imgur.com/khhsIQA.png)
4. 進入到專案的設定頁面 ![](https://i.imgur.com/VdayL6r.png)
    - Repository name: 專案的名稱
    - Description: 此專案的描述，可以不用填寫
    - Public/Private: 此專案為 公開/不公開 (不公開需要另外付費，若學生版則免費)
    - Initaliza this repository with a README: 是否增加專案的說明文件
    - Add .gitignore: 增加忽略的檔名，上面的範例是忽略所有 C (一個程式語言) 的檔案
    - Add a license: 增加授權條款，
- repo: repository (儲存庫) 的簡稱，可以理解成專案的名稱