承接上篇關於Git(三)-git flow,該篇分享會針對「查詢歷程」來介紹些相關的指令。
若要觀察中間有時麼樣的變化,我們可以使用下列指令來查看:
可以用來觀察兩個不同commit, branch, tag…之間的差異。以commit來說,只要輸入兩個想要比對的commit其SHA值就可以。
假設情境為在SHA值463f4的commit中剛建立了一個a.js的檔案,在進行git add
及git commit
指令後,產生了SHA值為7432e的commit。透過git diff 463f4 7432e
指令後,可以得到下述結果:
$ git diff 463f4 7432e
diff --git a/a.js b/a.js //a及b分別表示前者及後者有變動到的檔案
new file mode 100644
index 0000000..6cd0bea
--- /dev/null //為前者的狀態,還未有任何檔案
+++ b/a.js //為後者的狀態,代表產生了a.js的檔案
@@ -0,0 +1,2 @@ //+1,2 表示一個檔案,兩行程式碼。
+console.log("something"); // +號代表有新增的程式碼
+console.log("ononon");
假設我們又在一個SHA值0032b的commit中,增加了一行程式碼在a.js。並執行git diff 7432e 0032b指令後就會得到:
$ git diff 7432e 0032b
diff --git a/a.js b/a.js
index 6cd0bea..dda0387 100644
--- a/a.js
+++ b/a.js
@@ -1,2 +1,3 @@
console.log("something");
console.log("ononon");
+console.log("hihi"); // +號代表有新增的程式碼
用來觀看整個commit的歷史紀錄,也可以使用git log — graph
指令來觀察各branch之間其commit是怎樣互動的。以上述情境來說就會變成:
$ git log
commit 0032b50abe63cda1965f4827e0e370876536561b
Author: penguinrun <xxx@gmail.com>
Date: Fri Mar 31 18:10:37 2017 +0800
test 2
commit 7432e368659e39ed4e991f7f141e5def8b03e811
Author: penguinrun <xxx@gmail.com>
Date: Fri Mar 31 18:10:07 2017 +0800
test 1
commit 463f43ac05583fb69ad7ea83ac4b747b0b032505
Author: penguinrun <xxx@gmail.com>
Date: Wed Mar 29 19:38:13 2017 +0800
first commit
若使用git log --graph
指令,可以發現到在每個commit會出現線條來連接不同commit之間的關係。若是有不同的brunch則會延伸出去,與gitk --all
指令起來算是比較陽春的呈現方式。
$ git log --graph
* commit 0032b50abe63cda1965f4827e0e370876536561b
| Author: penguinrun <xxx@gmail.com>
| Date: Fri Mar 31 18:10:37 2017 +0800
|
| test 2
|
* commit 7432e368659e39ed4e991f7f141e5def8b03e811
| Author: penguinrun <xxx@gmail.com>
| Date: Fri Mar 31 18:10:07 2017 +0800
|
| test 1
|
* commit 463f43ac05583fb69ad7ea83ac4b747b0b032505
Author: penguinrun <xxx@gmail.com>
Date: Wed Mar 29 19:38:13 2017 +0800
first commit
整合了git diff
指令及git log
指令的資訊。若直接使用git show
指令,則會呈現最新一支commit的資訊。但也可以經由指定SHA值來指定呈現出特定commit的資訊。以上述情境來說就會變成:
$ git show
commit 0032b50abe63cda1965f4827e0e370876536561b
Author: penguinrun <xxx@gmail.com>
Date: Fri Mar 31 18:10:37 2017 +0800
test 2
diff --git a/a.js b/a.js
index 6cd0bea..dda0387 100644
--- a/a.js
+++ b/a.js
@@ -1,2 +1,3 @@
console.log("something");
console.log("ononon");
+console.log("hihi");
用來觀測commit的歷史活動,但與git log
指令不同的地方在於它是直接以條列式來呈現commit的活動,以上述情境來說就會變成:
0032b50 HEAD@{0}: commit: test 2
7432e36 HEAD@{1}: commit: test 1
463f43a HEAD@{2}: clone: from https://github.com/xxx/xxx.git
這邊也可以搭配我們在關於Git(一)-什麼是版本控制系統?,其F的方式一。來復原到指定的git commit版本。
不知道讀者在看過這一系列的介紹後,對於git有沒有更進一步的了解?其實,git還有許多更深奧的觀念及指令還可以去探究。關於這部分,筆者也還在學習當中。若讀者在使用git上發現了些問題或是遇到些有趣的議題,也歡迎提出來一起研究!
對於git的基本介紹就先到此告一段落了!接下來,筆者將接續分享關於「後端觀念」的部分。