Git入門介紹

Sharon Peng
7 min readFeb 14, 2022

--

相信有在寫程式的各位一定有聽過Git這個「版本控制器」。今天就要來向各位簡單介紹一下如何使用它!!

Outline:

  • 為什麼要使用Git
  • Terminal基本指令介紹
  • 整個Git運作概覽(Overview)
  • 如何在Project內,引入Git(版本控制器)
  • 新增(Add)、 上傳(Commit)說明
  • Git基本指令說明(status, log)

筆者所使用為MacOS,因此以下所使用的指令皆為Mac所適用的指令,還請各位多多留意。

為什麼要使用Git?

首先先介紹一下

什麼叫做「專案」?

不知道是否有很多讀者和我一樣,剛開始聽到「專案」這個詞時,一時完全無法理解,什麼叫做「專案」。

其實「專案」這個詞涵蓋的範圍太廣。簡單來說,不管是一項作業、工程、都市計劃等等,我們都可以說是專案。例如:一個App也是一個專案,蓋房子的過程也可以稱作是專案。

在電腦的領域中,我自己會把專案,想成是一個資料夾,裡面存放我建立一個專案(APP)所需要的所有資料。也可以想成是建立一個網站時,裡面會需要圖片檔、文字檔等等。當然這個資料夾下面一定會有很多的子目錄、檔案。

如果只是自行建立專案的話,那倒還好,但如果是同時有五六個人要一起完成這項專案的話,我們勢必需要知道誰修改了什麼,誰又做了什麼變動。如果只用一些簡單的文字做表示的話,想當然的最後一定是場大混亂,而Git,正是要解決剛剛所提到的問題。

Terminal基本指令介紹

Terminal是mac裡終端機的名稱,類似Window的CMD。

以下操作,皆是在終端機(Terminal)所呈現:

如何查看電腦中 Git的版本(Mac內建 Git)

git --version

Terminal常用指令

另外,ls指令,我們在後面也可以加入其他參數,如

-a :列出由小數點開頭的檔案(如下圖)

-l列出完整檔案的權限、擁有者、以及建立時間、修改時間

上面這段密密麻麻的文字是什麼?

Owner的權限:read, write(可讀可寫)

Group的權限:read(只能讀取)

World的權限:read(只能讀取)

請參考下圖:

圖片來源

Echo指令:類似可以直接將文字,放入檔案內部的指令(實際使用狀況還不是很理解,若有讀者熟悉的話,歡迎留言指教~~),這個不熟悉也不妨礙整體使用,只是後面有提到,因此在這邊稍加說明。

echo "hello, git" > hello.html(輸出的檔名)

整個Git運作概覽

主要可以概括成兩個指令:git add git commit

圖片來源

還記得先前提到,如果大家共同做專案的時,很多人都要對同一份文件進行更改,因此Git這個版本控制器,將「上傳自己的Code/作品」這項步驟拆成兩個步驟來進行。

以下分別介紹每個階段主要的工作:

  • Working directory(工作區):可以想成是我們還在Coding的這個階段,其他團隊成員都還看不見我們在幹嘛。
  • Staging Area(暫存區):將做好的一部分,先放到暫存區,去休息一下,等等回來還可以繼續更動,等到有一個小段落後,才會Commit到Repository內。同樣的現階段其他組員也還看不到你的作品。
  • Repository(倉庫):正式放到上面,可供其他組員修改、觀看

為什麼要分兩次上傳呢?

因為在群體工作時,當發生問題,我們要查閱修改紀錄時,當然希望可以越簡潔越好,方便大家觀看,因此才不回希望Commit的次數太多。

這種拆成三個階段的方式,一開始接觸可能很難理解,所以這邊利用「工廠」與「批發商」的關係來做比擬。

我們把每個團隊成員比喻為一間糖果工廠(A, B, C),每個團員都有自己的工作,相對的每個工廠都有自己出產的糖果。

  • Working Directory(工作區):A工廠專門生產軟糖、B工廠生產巧克力、C工廠生產拐杖糖。(彼此各自努力)
  • Staging Area(暫存區): 工廠生產完糖果後,會把貨物放到「存貨區」,等待出貨。(終於做出一點小東西,但可以繼續修正)
  • Repository(倉庫):裡面會聚集各個工廠所生產的糖果,也就是大家所寫的程式碼都會出現在這邊。(提供大家使用、觀看)

*注意:這邊的比喻還是跟實際上有點落差,只是想要以比較簡單的形式來向各位讀者示範,實際上多接觸的話,就會有感覺了,還請大家自行體會~

建立一個Project,並引入Git

那話不多說,直接開始吧!

Step 1:建立新的資料夾(個人習慣在桌面上使用,因為比較看得清楚)

cd desktop         # 切換到桌面
mkdir git-practice # 建立新的資料夾
cd git-practice. # 切換到新的資料夾裡面

Step 2:導入Git版本控制器

git init           # 導入git,讓git開始對這個資料夾進行控制

Step 3:把檔案交給Git管理

echo "hello World" > firstGit.html   # 建立一個簡單的HTML檔案
git add firstGit # 把檔案交給Git管理

Step 4:把暫存區的東西交到倉庫裡存檔

git commit -m "對於這次的修改,想要和團隊成員組的「說明」"

完成以上動作後,就完成Git的第一步!!

新增(Add)、上傳(Commit)指令說明

新增(Add)

git add 檔案名稱.xxx

補充:git add 也有其他的方便的語法可以使用

  1. 當今天有10個檔案要add到Staging Area,如果想要一次全部add上去,就可以使用git add --all
  2. 今天我只想要把副檔名為.python的所有檔案add上去,就可以使用git add *.python

上傳(Commit)

git commit -m "第一次上傳"

說明:-m 後面括弧內的文字,要表示「你在這次的Commit做了什麼事情」,主要是讓你的同事知道你在做什麼。

如果我沒有其他文字(詞窮)要加上去呢?

沒有東西也想要Commit,可以使用

git commit --allow-empty -m "空的"

雖然這個指令沒有什麼意義,但是當我們要做一些 Git的練習時,就能很快地建立出一堆檔案,參考即可~~

Git基本指令說明(status, log)

目前 Git狀態

git status

說明:這個檔案從未在git內出現過← Untracked狀態

當我git add 後,

說明:這個檔案現在已經在Stage狀態內,等待被Commit。

目前 Git修改情形,誰在何時?修改了什麼東西?

git log

另外,可以額外加上的參數,讓輸出結果更加精簡

git log --oneline --graph

這篇文章就到這邊,只有簡單帶過一下Git在做什麼,還有一些基本的指令,看網路上很多人都說Git易學難精,但只要可以抱持著20/80法則,只要可以將20%的指令掌握住,就可以應付日常所需要的工作了。

希望有幫助到需要的夥伴,如果又什麼寫錯的部分,也歡迎大家多多指教

那我們就下次再見囉 👋👋

--

--

Sharon Peng
Sharon Peng

No responses yet