Git入門介紹
相信有在寫程式的各位一定有聽過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
也有其他的方便的語法可以使用
- 當今天有10個檔案要add到Staging Area,如果想要一次全部add上去,就可以使用
git add --all
- 今天我只想要把副檔名為.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%的指令掌握住,就可以應付日常所需要的工作了。
希望有幫助到需要的夥伴,如果又什麼寫錯的部分,也歡迎大家多多指教
那我們就下次再見囉 👋👋