iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
0
Modern Web

Node JS-Back end見聞錄系列 第 5

Node.js-Backend見聞錄(04):關於Git(四)-查詢歷程

  • 分享至 

  • xImage
  •  

Node.js-Backend見聞錄(04):關於Git(四)-查詢歷程

前言

承接上篇關於Git(三)-git flow,該篇分享會針對「查詢歷程」來介紹些相關的指令。

若要觀察中間有時麼樣的變化,我們可以使用下列指令來查看:

git diff

可以用來觀察兩個不同commit, branch, tag…之間的差異。以commit來說,只要輸入兩個想要比對的commit其SHA值就可以。

假設情境為在SHA值463f4的commit中剛建立了一個a.js的檔案,在進行git addgit 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"); // +號代表有新增的程式碼

git log

用來觀看整個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 show

整合了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");

git reflog

用來觀測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的基本介紹就先到此告一段落了!接下來,筆者將接續分享關於「後端觀念」的部分。


上一篇
Node.js-Backend見聞錄(03):關於Git(三)-git flow
下一篇
Node.js-Backend見聞錄(05):關於後端觀念(一)-什麼是client-server架構?
系列文
Node JS-Back end見聞錄31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言