---
# System prepended metadata

title: Git使用教學 <i class="fa fa-code-fork" aria-hidden="true"></i>
tags: [教材設計, 33th學術]

---

# Git使用教學 <i class="fa fa-code-fork" aria-hidden="true"></i>
###### tags: `33th學術`, `教材設計`
---
[TOC]

## 什麼是 Git?<i class="fa fa-github-alt"></i>

檔案會因為不同的時間的變化有所不同，假如一開始有一個test目錄裡只有1個檔案，過兩天增加到5個。不久之後，有修改文件，過了三個月後又增加到7個，最後又刪掉了1個…不斷的變更目錄底下的資料，這現象不管是新增或刪除檔案，亦或是修改檔案內容，都稱之為一個「版本」，所以不斷地更換版本方式，而需要有一個方式做「管理」，而就有的「版本控制系統」，就是指會幫你記錄這些所有的狀態變化，並且可以像搭乘時光機一樣，隨時切換到過去某個「版本」時候的狀態。
簡單的說，Git 就像玩遊戲的時候可以儲存進度一樣。舉例來說，為了避免打頭目打輸了而損失裝備，又或是打倒頭目卻沒有掉落期望的珍貴裝備，你也許在每次要去打頭目之前之前記錄一下，在發生狀況的時候可以載入舊進度，再來挑戰一次。
:::info
延伸的使用：GitHub, GitLab
[我之前寫比賽時有用](https://hackmd.io/7y5fHwz0SviAkRj_22zccQ)
:::

## 安裝方式:

![](https://i.imgur.com/mr1qNSp.png)
### Linux <i class="fa fa-linux" aria-hidden="true"></i>/ Mac OSX <i class="fa fa-apple" aria-hidden="true"></i>
安裝好之後，就可以立即在終端機使用
直接在 Terminal 終端機當中輸入 `git --help` 取得常見指令用法
### Windows <i class="fa fa-windows" aria-hidden="true"></i>
Git Bash = MinGW + Git
MinGW 讓我們可以在 Windows 的環境下，使用與 UNIX-like 的方式下指令 cd, ls, vim, curl, ...
![](https://i.imgur.com/ce4N8LS.png)

## 配置

### 設定 Username, E-Mail
初次使用 git，最重要的就是設定 username 以及 email
```bash=
$ git config --global  user.name "your_name"
$ git config --global  user.email "your_email@example.com"
```
第一次使用可以先隨意設定，但是之後若要搭配 GitHub 的服務時，就必須使用在 
註冊時所使用的 `username`, `email`
> 使用 --global 的參數，表示對於所有的 git repo 都會採用這組預設值

接著，我們可以透過 `git config -l` 的指令，來查看我們目前 git 的設定內容
```bash=
$ git config -l
```
> 參數-l 為--list，等於
> `$ git config --list`
> detail [git config](https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-config)

photo
而所有 git config --global 的設定內容，都會被寫入`~/.gitconfig`
photo

### 預設開啟彩色
```bash=
$ git config --global  color.ui true
```
### 預設編輯器 vim
```bash=
$ git config --global  core.editor vim
```
## Github <i class="fa fa-github"></i>
### 建立 GitHub 帳號
GitHub 是個 Git repository 的托管網站，可讓開發者將自己的專案儲存到網路上，與全世界分享，我們可搭配 Git 在本機進行專案管理並發佈於 GitHub。

GitHub 同時提供付費帳號和針對開放原始碼程式的免費服務。根據 2009 年的 Git 使用者調查，GitHub 是最熱門的 Git 分享網站。它提供了如 feeds, followers 和顯示開發者們如何在他們版本庫上的版本工作的圖表。 GitHub 也提供類似剪貼簿的功能，issue tracker 和網頁使用 Wiki，通過一個 git repository 即可對這些頁面進行編輯。
![](https://i.imgur.com/KVRP0FF.png)
### 建立新 repository
在和本機的 repository 連動之前，先給自己的專案取個名字吧，這會是你專案之後的名字，也會是其他人搜尋你專案的時候的關鍵字，好的專案一定有個好名稱。

photo
### SSH key 產生的方法
`ssh-keygen`


## Gitlab <i class="fa fa-gitlab"></i>

![](https://i.imgur.com/0GKIrw2.png)

[連猴子都懂的git入門指南](https://backlog.com/git-tutorial/tw/)