一、GitHub for windows
GitHub for windows圖像界面功能簡單,容易上手。
1、登錄後Github for Windows會幫你自動創建SSH Key。
2、commit之前需要在tools->options中設置用戶名和郵箱。
3、Publish將修改上傳到GitHub,之後這個按鍵變成sync。
二、TortoiseGit
本文內容遵從CC版權協議, 可以隨意轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明網址: http://oldratlee.com/post/2012-10-25/git-check-diff-between-tag-or-branch-using-gui-diff
使用TortoiseGit可以解決這個問題。
-
在Git工程目錄,右鍵菜單:
-
點菜單項【Git與前一版本比較】
如何沒有看到這個菜單項,則在【TortoiseGit】的子菜單中。 -
打開了【TortoiseGit的版本Diff窗口】,缺省顯示的是工作區和前一個提交版本的差異
- 點擊右邊的按鈕,選擇要比較的分支或是標籤後,下列的文件列表裏就是兩個分支或是標籤的Diff相關的文件。雙擊裏面的文件條目,TortoiseGit會使用TortoiseGit配置的GUI Diff查看工具查看文件Diff。
其實【TortoiseGit的版本Diff窗口】的右邊按鈕選擇,除了選分支或是標籤,還可以選擇指定版本,很方便。
我用的是Beyond Compare來查看Diff,可以配置成Beyond Compare查看Diff時忽略空白、Java註釋之類的不重要的修改,這樣可以聚焦到對運行有影響的代碼修改上。
這個功能Google了幾天沒有找到解決方法,最後是把TortoiseGit的菜單項一個一個地過,給找到了。
相信我能想到的需求,TortoiseGit一定是早想到解決了。
下面說一下引發這個問題的的問題。
爲什麼有需求,要查看兩個分支或是標籤的Diff?
和2個版本並行的開發模式有關,參見我的博文: Dubbo的2個版本並行的開發模式
採用2個版本並行開發後,當新功能版本要成爲線上的GA版本時,會想和當前GA比較一下,
- 相對當前的GA版本增減那些內容,會不會有風險?
-
有沒有遺漏掉GA的Bug Fix代碼Port到新功能版本中?
雖然Dubbo有Ticket記錄,每次發佈前做到大家一起Review每個Ticket和修改。
人總是會出錯,這樣有發生過。遺漏BugFix的代碼可能就是線上的又一次故障!
爲什麼要用GUI Diff?
其實查看兩個分支或是標籤的Diff,Git命令行就可以做到:
1
|
git
diff
arg1 arg2 |
上面的給2個參數,可以是要比較的是分支或是標籤名。 Git會把Diff都找出來,在less命令中查看。
這個命令行,功能沒有問題。一個不方便的地方是less命令會把所有的差異都列出來,比如空白、註釋等等。
GUI Diff工具可以配置忽略不重要的異常(比如我用的Beyond Compare),省去不少不必要的時間浪費。
另,GUI的顯示會更直觀和方便操作,這正是Diff查看需要特徵。比如分左右兩欄對比查看(VimDiff也可以)、把變動的內容用不同的顏色標識出來 等等。
關於的GUI和CLI的比較可以看一下我另一篇博文【譯】GUI & CLI Principles。
使用git difftool
另一個類似的解決解決方法是使用git difftool
命令,相對於git
diff
是通過配置的GUI來查看Diff。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[ diff ] tool
= jellybc3 [difftool] prompt
= false [difftool
"jellybc3" ] #use
cygpath to transform cygwin path $LOCAL (something like /tmp/U5VvP1_abc) to windows path, because bc3 is a windows software cmd
= \" /cygdrive/c/program
files /beyond
compare 3 /bcomp .exe\"
\"$(cygpath -w $LOCAL)\" \"$REMOTE\" [merge] tool
= jellybc3 [mergetool] prompt
= false [mergetool
"jellybc3" ] #trustExitCode
= true cmd
= \" /cygdrive/c/program
files /beyond
compare 3 /bcomp .exe\"
\"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\" \"$MERGED\" |
注意:
- cygwin上,$LOCAL不轉換爲Windows路徑,會發現BC只打開了一個文件。
- 注意引號需要轉義,否則git調用時會出錯。
參考Git下使用Beyond Compare作爲比較和合並工具
SVN如何使用的圖形化查看兩個分支或是標籤的Diff
順便也說一下SVN的做法,使用SVN時我也會要這麼做。
# 實際上是SVN這麼做了,讓我在使用Git時也想到這麼做。
-
在TortoiseSVN的【版本庫瀏覽器】中,在要比較標籤或是分支目錄上右鍵,點菜單項【爲比較標記】,這樣就指定了一個要比較目錄。這裏我選擇的是標籤2.4.3,選完後會粗體。
-
在另一個要比較的標籤或是分支目錄上右鍵,點菜單項【比較URL】,就會打開【已改變文件】的窗口。
- 【已改變文件】的窗口。
Thanks for reading, and I hope it can help you :-)