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 相關基礎與指令來加強
首先我們來看看如何檢視送交紀錄
檢視送交紀錄
- 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 ~
沒有留言:
張貼留言