git 運作原理&基本指令


Posted by V. K. on 2020-06-18

什麼是 git?

git 是一個版本控制系統,能夠替每一階段更新的檔案留下紀錄,替修正過的檔案做版本編號並記下異動的內容,這個特性運用在多人協作的開發及檔案管理上能夠大大地增加團隊的效率。


git 運作原理

在實際操作之前,先來了解一下為什麼我們會需要版本控制?以及 git 最基本的運作原理。

假設今天是在一人作業的情況下,我們可能不一定需要版本控制,每一次修改檔案後替檔案更名並壓上日期、編號,就可以很明確的知道哪個是最新的版本。但假設今天修改次數達到 100 次,當你想要回到某次修改的版本時,恐怕也是要耗上好長一段時間尋找相對應的版本,這就是為什麼我們需要版本控制。

在一人作業的情況下,每次更動檔案 git 都會替檔案做編號並記錄異動,每一次更新我們也可以替檔案加上異動備註。因此當檔案數量累積到很多時也不怕找不到你要的版本。

而 git 還有個建立分支(branch)的功能,很方便用於多人協作時。master 這條 branch 通常會是專案每個階段中功能開發最完善且穩定的版本。在多人協作的情境下,因為各自負責不同的功能開發,並不會直接在 master 上做修改,而是建立自己的 branch 做調整,在完成功能調整後再分別合併回 master。整個過程中,git 同樣都會為每個版本留下相關紀錄,如某個功能將來有問題需要調整,也能馬上就找出相對應的版本修改。


關於分支(branch)

關於分支
關於分支

分支的概念如同前面提到的,保留功能完善且穩定的版本,同步分別於新建的 branch 開發新功能,最後將功能合併回 master。


git 基本指令

git 指令有很多,但你只要先知道這些就能完成大部分的事情。

git init 初始化資料夾,為專案做版本控制。

git status 確認版本控制狀態

git add 決定檔案是否加入版本控制

git add text.js

將 text.js 這個檔案加入版本控制
git add .

將專案內所有檔案加入版本控制

git rm --cached 取消追蹤版本控制

git rm --cached text.js

將 text.js 取消版本控制

git commit 新建版本

git commit -m "first commit"

新建一個版本並留下「first commit」的備註

git commit -am 加入版本控制並新建版本(只限原有檔案修改)

git commit -am "first commit"

加入版本控制並新建一個版本,且留下「first commit」的備註
這個指令可以省去 git add 的步驟,但如為新增檔案無法使用這個指令。

git log 歷史紀錄,可以看到每個版本相關資訊。

git log --oneline 歷史紀錄,精簡版。

git checkout 回到某個版本

git checkout <版本名稱>

回到 <版本名稱> 這個版本

git checkout master 回到主分支/最新版(最近一次 commit 的版本)

.gitignore 忽略的檔案(不加入版本控制)

新建一個 .gitignore 檔,在檔案中輸入不加入版本控制的檔案名稱,這些檔案將被忽略。

直接在終端機中操作步驟如下:
1. touch .gitignore
2. vim .gitignore
3. 在檔案中輸入要忽略的檔案並存檔

git diff 檢視修改內容(在 commit 之前)

git branch 建立分支

git branch abc

建立一個名為 abc 的分支

git checkout -b 建立分支並切換到分支

git checkout -b abc

建立一個名為 abc 的分支、並切換到分支 abc

git branch -d 刪掉分支

git branch -d abc

刪除一個名為 abc 的分支

git branch -v 查看目前有的分支(查看後可按 q 退出畫面)

git checkout 切換分支

git branch abc

切換到名為 abc 的分支

git merge 將分支合併進來

git merge abc

將名為 abc 的分支合併進 master 底下
(需要切換到 master 進行此操作)

conflict 遇到衝突提示時需要手動檢視相關檔案,並再次確認建立版本。


操作 git 的簡易流程

  1. git init 為專案做 git 版本控制

  2. git status 確認版本控制狀況(隨時可用到的指令)

  3. .gitignore 建立不要版本控制的檔案

  4. git add . 加入檔案到版本控制

  5. git commit -m "commit" 建立新版本

  6. git log 確認版本歷史資料

  7. 以上流程完成後,每有新增的檔案一定都要使用 git add . 將檔案加入到版本控制中。

    如只是修改舊有檔案可使用 git commit -am "commit" 指令,一次完成加入版控並新增版本動作。

  8. git branch abc 建立分支 abc

  9. git checkout abc 切換到新建的分支進行開發

  10. 重複步驟 4 及 5

  11. git merge abc 將分支合併進來(切換到 master 操作)

  12. git branch -d abc 刪掉已合併的分支


關於 GitHub

如何把 code 放上 GitHub?

  1. 先在 GitHub 新建一個 new repository

  2. git remote add origin <repository位址> 設定遠端連接的位址

  3. git push origin master 把本地的 master 推到 GitHub

  4. 多人協作情況下,GitHub 上的 master 可能會經常更新,因此每次開發前都要先更新本地的 master 版本。

  5. git pull origin master 將 GitHub 上最新的 master 版本同步到本地

  6. 如果遇到衝突需要手動解決

  7. 於本地端同樣需要新建分支進行開發,完成後將新建的分支推到 GitHub。
    git push origin abc 將分支 abc 推到 GitHub

  8. 分支推上去後可於 GitHub 頁面提出「pull requests」(簡稱 PR)

  9. 當分支 merge 至 master 後,請再將最新版本的 master 同步到本地。

  10. 這時 GitHub 及本地的分支 abc 已不再需要,可以刪除。

如何把 GitHub 上的 repository 抓到本地?

當新加入一個專案時,第一件事就是要將現有的專案抓到本地。

  1. git clone <repository位址> 將 repository 下載到本地

  2. 專案下載到本地後,同樣需要新建分支進行開發。

  3. 後面步驟可參考上述「操作 git 的簡易流程」、「如何把 code 放上 GitHub?」

延伸閱讀
git 狀況劇
連猴子都能懂的Git入門指南


2020.6.18

  • 這篇筆記莫名花了好多時間,其實想用比較簡單的角度來寫這篇,但不得不提的部分感覺很多,寫下來覺得有點雜亂無章...等概念更清晰一點再回頭來修正內容吧~

2021.5.19

  • 時隔一年的調整,受到疫情影響,台灣居然開始Work from Home...

#Git #Github







Related Posts

ClearDB id 連續遞增問題

ClearDB id 連續遞增問題

用 ES6 語法串接 API - Fetch

用 ES6 語法串接 API - Fetch

用 DDS 開發 ROS 2.0

用 DDS 開發 ROS 2.0


Comments