---
# System prepended metadata

title: Git & GitHub

---

# Git & GitHub
[toc]
## 1.Git的介紹
Git 是一種分散式版本控制系統 (Distributed Version Control System, DVCS)。用來追蹤程式碼或文件的修改歷史、協助多人協作開發。
### 一、核心概念
| 名稱                      | 說明                    |
| ----------------------- | --------------------- |
| **Repository（儲存庫）**     | 專案的版本資料庫，包含所有檔案的歷史版本。 |
| **Commit（提交）**          | 一次版本快照，記錄檔案變化。        |
| **Branch（分支）**          | 開發線。允許多個版本並行開發。       |
| **Merge（合併）**           | 把不同分支的修改整合起來。         |
| **Clone / Pull / Push** | 從遠端複製專案、取回更新、上傳更新的操作。 |
### 二、Git 的特性

- 分散式架構：每個人都有完整版本庫，可離線操作。
- 高效快照：每次 commit 儲存的是檔案差異（增量）。
- 安全性強：所有版本都有唯一的 SHA-1 校驗碼。
- 輕量分支：建立、切換、合併分支成本極低。
---
## 2.Git 的安裝
我們在使用Git之前要先到Git的官網下載Git下來。
下載網址：https://git-scm.com/install/windows
![image](https://hackmd.io/_uploads/BkVRkKvy-e.png)
點開之後直接無腦點繼續就對了
## 3. Visual Studio Code 的安裝
VScode是一個大型的程式編輯器，我們時常利用它來做編輯程式，它內建終端機，也就是
下載連結：https://code.visualstudio.com
一樣無腦點繼續就好
## 4. GitHub
GitHub連結：https://github.com
###### ~~創帳號建議用手機創，現在的驗證真的有夠麻煩~~

## 5.Git常用指令
### 登入帳號
:::warning
注意，每次用不同的主機都要執行這指令!!
:::

```
git config --global user.name "自己的名字"
git config --global user.email "自己的email"
```
### 將團隊的資料夾拉下來本地端
```
git clone 資料夾連結
```
##### 資料夾連結點圈起來的部分  
![image](https://hackmd.io/_uploads/ryXFLBdvbg.png)

### 追蹤以及提交
```
git add .
git commit -m "修改內容"
```
### 將本地的code推送到GitHub上
```
git push <remote>(通常都打origin) <branch>(你的分流)
```
### push到GitHub上後要做的事
1. 前往你們的資料夾
2. 點開Pull requests
![image](https://hackmd.io/_uploads/S1VP_BdvZl.png)
3. 按下創建New pull requests![image](https://hackmd.io/_uploads/rkbjOBdvbl.png)
4. 後面的compare修改成自己的branch![image](https://hackmd.io/_uploads/HJK0_B_Dbg.png)
5. 點擊Create pull request
6. 後面一直點綠色的按鈕就好



### 分流
branch的中文意思是分流，顧名思義就是將你的程式碼分流到一個你自己的區域，在那個區域你可以隨意更改你自己的程式碼，push到GitHub上的repo(資料夾)也不會動到主流(main)。
切換分流的方法如下
```
git checkout -b 你的branch(自己取名，建議取個綽號就好)
(-b 的意思是創建一個新branch，如果本地已經有branch的話可以不用打-b)
```

### 將團隊成員已經push到repo上的code拉到本地
```
git pull origin main
```
:::info
為什麼會用origin main呢?
:::
:::success
因為使用者會將code merge到main(主流)中
:::

### .gitignore
請將
```
# Python-generated files
__pycache__/
*.py[oc]
build/
dist/
wheels/
*.egg-info

# Virtual environments
.venv
.env

# Unity generate
Library/
Temp/
Obj/
build/
builds/
logs/

.vs/
.idea/
*.csproj
*.sin
*.user
*.userprefs

.DS_Store
Thumbs.db
```
