iT邦幫忙

DAY 12
5

程式學習雜記系列 第 12

2013IT鐵人賽-12-git03-git基礎練習git show 與 git diff

git
  • 分享至 

  • xImage
  •  

2013IT鐵人賽-12-git03-git基礎練習git show 與 git diff

2013IT鐵人賽-12-git03-git基礎練習git show 與 git diff

在之前的兩篇文章( 2013IT鐵人賽-03-程式學習紀錄-git01-使用git與GitHub紀錄 / 2013IT鐵人賽-08-git02-git線上學習體驗小記 )我們有介紹 git 的基本操作, 還有在一些文章內將我們的檔案上傳到 GitHub 上面.

先來回憶一下自己之前 git 的相關操作
* 安裝 git 套件
* git init (初始化容器)
* git config --global user.name (設定使用者名稱)
* git config --global user.email (設定電子郵件)
* git add (將檔案加入 git )
* git commit (送交檔案)
* git remote add (加入遠端的repo)
* git push origin master (將檔案 push 到遠端)
* git clone (拷貝容器)

今天就來針對 git 相關基礎與指令來加強
本次練習還是使用 EasyCloud 的 VM 來練習, 並聯接終端機來操作.

首先我們來看看如何檢視送交紀錄

檢視送交紀錄
* git log
----依照時間順序列出
* git show 辨識碼
----如果沒有加上辨識碼, 則顯示最近一筆紀錄
* git show-branch
----顯示目前開發分支
----如果不下任何參數, 只顯示最近的送交
----可以加上 --more=10 最多顯示 10 個版本

練習如下
當執行 git log 指令時, 會依照時間順序列出, 新的commit 會在前面
#git log

commit abde3038192a451df96753e6c0790a9ab1817684
Author: Max Huang <sakana@cycu.org.tw>
Date:   Fri Sep 20 22:38:58 2013 +0800


    Fix and add java exercise file


commit 6e5cccb2dea713e208695834916dd82eaf484228
Author: Max Huang <sakana@cycu.org.tw>
Date:   Tue Sep 17 23:46:27 2013 +0800


    Fix some error in ri20min.rb, thanks David


commit ae480c44482683d7c07934d8cd5494957e33b096
Author: Max Huang <sakana@cycu.org.tw>
Date:   Mon Sep 16 01:45:13 2013 +0800


    Add java exercise files


commit 97880695ad234a700132c2bba6d4b45c3c6ca72c
Author: Max Huang <sakana@cycu.org.tw>
Date:   Thu Sep 12 16:31:27 2013 +0800


    Fix some typo in  ri20min.rb


commit e8c460a57dc12521b92ee0f99a0fcad87215c0e6
Author: Max Huang <sakana@cycu.org.tw>
Date:   Thu Sep 12 16:29:11 2013 +0800


    Finish vi ri20min.rb origin

使用 git show 指令如果沒有加上識別碼, 會顯示最近一筆的紀錄
#git show

commit abde3038192a451df96753e6c0790a9ab1817684
Author: Max Huang <sakana@cycu.org.tw>
Date:   Fri Sep 20 22:38:58 2013 +0800


    Fix and add java exercise file


diff --git a/java/Basic_001_Helloworld.class b/java/Basic_001_Helloworld.class
new file mode 100644
index 0000000..71d7c7f
Binary files /dev/null and b/java/Basic_001_Helloworld.class differ
diff --git a/java/Basic_001_Helloworld.java b/java/Basic_001_Helloworld.java
new file mode 100644
index 0000000..912c8e4
--- /dev/null
+++ b/java/Basic_001_Helloworld.java
@@ -0,0 +1,6 @@
+class Basic_001_Helloworld {
+       public static void main(String[] args){
+               System.out.println("Goodbye, World");
+       }
+
+}
diff --git a/java/Basic_002_javaStructure.class b/java/Basic_002_javaStructure.class
new file mode 100644
index 0000000..0cbdb35
Binary files /dev/null and b/java/Basic_002_javaStructure.class differ
diff --git a/java/Basic_002_javaStructure.java b/java/Basic_002_javaStructure.java
new file mode 100644
index 0000000..bd6eaa1
...以下省略

所以也可以加上識別碼的方式來檢視, 例如以下

git show ae480c44482683d7c07934d8cd5494957e33b096

commit ae480c44482683d7c07934d8cd5494957e33b096
Author: Max Huang <sakana@cycu.org.tw>
Date:   Mon Sep 16 01:45:13 2013 +0800


    Add java exercise files


diff --git a/java/helloworld.class b/java/helloworld.class
new file mode 100644
index 0000000..a608491
Binary files /dev/null and b/java/helloworld.class differ
diff --git a/java/helloworld.java b/java/helloworld.java
new file mode 100644
index 0000000..1ff1d76
--- /dev/null
+++ b/java/helloworld.java
@@ -0,0 +1,6 @@
+class helloworld {
+       public static void main(String[] args){
+               System.out.println("Goodbye, World");
+       }
+
+}

使用 git show-branch 顯示開發的分支

git show-branch

[master] Fix and add java exercise file

不過因為我們目前沒有分支, 所以只會顯示 master 然後顯示最近的送交(commit) :-)
我們可以透過 --more= 的參數來顯示多一點的版本資訊

git show-branch --more=10

[master] Fix and add java exercise file
[master^] Fix some error in ri20min.rb, thanks David
[master~2] Add java exercise files
[master~3] Fix some typo in  ri20min.rb
[master~4] Finish vi ri20min.rb origin
[master~5] vi ri20min.rb
[master~6] Add ruby 20min exercise file
[master~7] first  commit

接下來我們來討輪不同送交(commit) 的差異, 我們可以透過 git diff 指令來執行

比較不同送交的差異
* git diff 辨識碼 辨識碼

藉由上面的版本資訊, 我們可以知道 [master~3] 是去改正[master~4] 內的ri20min.rb的一些錯誤
首先我們來使用git log 指令觀察送交資訊並取得識別碼

git log

commit 97880695ad234a700132c2bba6d4b45c3c6ca72c
Author: Max Huang <sakana@cycu.org.tw>
Date:   Thu Sep 12 16:31:27 2013 +0800


    Fix some typo in  ri20min.rb


commit e8c460a57dc12521b92ee0f99a0fcad87215c0e6
Author: Max Huang <sakana@cycu.org.tw>
Date:   Thu Sep 12 16:29:11 2013 +0800


    Finish vi ri20min.rb origin

透過 git diff 檔案來比較差異性 (輸出內的 + 符號代表代表新的內容)

git diff e8c460a57dc12521b92ee0f99a0fcad87215c0e6 97880695ad234a700132c2bba6d4b45c3c6ca72

diff --git a/ruby/ri20min.rb b/ruby/ri20min.rb
index 281b98b..a4a9101 100644
--- a/ruby/ri20min.rb
+++ b/ruby/ri20min.rb
@@ -55,7 +55,7 @@ if __FILE__ == $0
   #變更成 nil
   mg.names = nil
   mg.say_hi
-  mg.saybye
+  mg.say_bye
 end

最後我們來聊一下配置設定(設定檔), 因為之前的設定方式為 --global 來設定

設定檔有優先順序,越先列出的越高
分別是
.git/config
~/.gitconfig
/etc/gitconfig
* .git/config
----以容器為影響範圍
----可以使用 git config --file 來設定
* ~/.gitconfig
----以使用者為影響範圍
----可以使用 git config --global 來設定
* /etc/gitconfig
----以全系統為影響範圍
----可以使用 git config --system 來設定

Fun with Day 12 ~


上一篇
2013IT鐵人賽-11-Java03-Java檔案的基本結構
下一篇
2013IT鐵人賽-17-Android02-Android虛擬裝置及命令列設定
系列文
程式學習雜記26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言