---
# System prepended metadata

title: 'Git #2 Git 基本操作'
tags: [Git]

---

# Git #2 Git 基本操作
###### tags: `Git`

## 基本指令架構

![](https://i.imgur.com/3dGqMpq.jpg)


## Git 常用指令



| 指令 | 說明 |
| -------- | -------- |
| git init     | 初始化數據庫    |
| git status | 查詢這個專案的當前狀態 |
| git add . | 將檔案加入到索引 |
| git commit -m "你想寫下的更新說明" | 將索引檔案變成一個更新(commit) |
| git log | 觀看 commit 歷史紀錄 |
| git clone 數據庫網址 | 下載遠端數據庫 |
| git push origin master(檔案所在分支，不一定是 master) |更新遠端數據庫 |
| git checkout commit代碼/分支 | 返回查看該 commit 狀態  |
| git pull | 將遠端數據庫下載同步更新到本地數據庫 |
| git clone <url> | 下載遠端數據庫 |
| git remote -v | 觀看遠端數據庫列表(包含 url) |
    
## git status - 檢查數據庫狀態

在初始化 Git 數據庫之後，就可以使用 Git 來做版本控制，在製作專案的時候難免會去新增、修改、刪除檔案，使用這項指令可以知道你做了什麼事情

### git status 範例

我新建了一個 robot 專案，裡面並沒有任何檔案，並在使用 `git init` 初始化過後來做版本控制

新增檔案之前，使用一次 git status 來看看

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

可以看到專案是空的， `nothing to comit`

那我們建立一個新的檔案來看看

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

可以發現 Git 檢查到了這個專案新增了一個 robot.html，一個 untracked 檔案，**注意這時候這個檔案還是在你的工作目錄，並還沒有到數據庫這個地方喔**

---

## 1. git add . - 放到索引

在我們對這個目錄進行一些動作後，想要將檔案進行更新等等並推到數據庫

在此之前透過索引可以讓 Git 知道你哪些東西是要推到數據庫的，而索引可以將這些檔案湊成一次更新檔放到本地數據庫中

### git add . 範例

在先前新增了一個 robot.html 之後我想要將東西更新到數據庫，在此之前先將檔案新增至索引

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

---

## 2. git commit -m 'update' - 推到本地數據庫

將檔案放到索引之後，我想要將檔案放到本地數據庫作為一次的更新

### git commit -m 'update' 範例

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

"" 裡面是更新檔的說明，可以將你想寫下的寫下去，並成功新增檔案到本地數據庫

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

在 commit 之後可以發現 untracked 這條會消失，代表放進入了本地數據庫

### git log - 觀看 commit 歷史紀錄

透過 `git log ` 可以知道你 commit 的紀錄

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

可以知道作者是誰、以及日期還有 commit 說明

---

## 3. 放到遠端數據庫 GitHub repository

### step1 在 GitHub 新增一個 repository 專案

[GitHub](https://github.com/)

### step2 連線數據庫

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

新增完專案後，可以看到妳的專案有兩種方式可以連線到遠端數據庫來推檔案
1. 創建一個新的本地數據庫
2. 使用本地已經創建過的數據庫

如果你有創建了就使用第二個，直接複製貼到 Git Bash 就可以惹!

指令講解:

`git remote add origin git@github.com:Danny-1211/robot.git` : 新增(註冊)遠端數據庫，origin 為數據庫預設名稱

`git branch -M main` : 創建一個分支就做 main，他會連線到遠端數據庫

`git push -u origin main` : 將本地數據庫檔案推到 origin 這個遠端數據庫

* `-u` : 代表他預設會推到哪個數據庫
* `origin` : 遠端數據庫預設名稱，可以定義名稱

### step3 成功!
 
 ![](https://i.imgur.com/WinQLWN.png)

### 記住! 遠端數據庫並不會跟著本地數據庫一起更新

每當本地數據庫更新完時，也要記得更新遠端數據庫

更新遠端數據庫指令:

`git push origin master ( origin main )` 

把本地數據庫 push 到遠端數據庫的分支不一定完全是 origin master ， 之後會再補充 origin 跟 master 是什麼


## 每當有修改、更新檔案時，都需要從 git add . 開始從放上索引再一步步到放上遠端數據庫

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


## Git 還原先前版本

有時候隨著版本更新難免都會出現程式碼有錯誤的情況，我們可以透過 Git 再次返回到錯誤之前的狀態

### HEAD 

Head 指標指向目前狀態，會隨著我們 commit 目前進度移動，所以我們可以移動 HEAD 回到某個 commit 之前的狀態

我們使用 `git log ` 來查看 commit 紀錄

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

我們可以看到最新的 commit 有一個  HEAD所指向的地方，這裡就是目前這個 commit 後的檔案狀態

### 假設我們想回到上一個 commit 要怎麼辦 (回到本次的更新說明5/22)

#### git checkout commit代碼/分支

checkout : 是查看的意思
我們可以看到 commit 後面有一堆英文+數字，這個就是 commit 代碼
我們就是要利用這個代碼搭配 `git checkout` 回到這個代碼所屬 commit 狀態

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

上圖就是利用 git checkout 返回到上個版本 

### 那我們要回去最新的版本怎麼辦

#### `git checkout main (該分支名稱)` 

預設就會回到該分支囉或是要再利用代碼也是可以的