Windows 和 Ubuntu 下 Git 使用筆記

一、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可以解決這個問題。

  1. 在Git工程目錄,右鍵菜單:
    TortoiseGit右鍵菜單
  2. 點菜單項【Git與前一版本比較】
    如何沒有看到這個菜單項,則在【TortoiseGit】的子菜單中。
  3. 打開了【TortoiseGit的版本Diff窗口】,缺省顯示的是工作區和前一個提交版本的差異
    TortoiseGit的版本Diff窗口
  4. 點擊右邊的按鈕,選擇要比較的分支或是標籤後,下列的文件列表裏就是兩個分支或是標籤的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\"

注意:

  1. cygwin上,$LOCAL不轉換爲Windows路徑,會發現BC只打開了一個文件。
  2. 注意引號需要轉義,否則git調用時會出錯。

參考Git下使用Beyond Compare作爲比較和合並工具

SVN如何使用的圖形化查看兩個分支或是標籤的Diff

順便也說一下SVN的做法,使用SVN時我也會要這麼做。

# 實際上是SVN這麼做了,讓我在使用Git時也想到這麼做。

  1. 在TortoiseSVN的【版本庫瀏覽器】中,在要比較標籤或是分支目錄上右鍵,點菜單項【爲比較標記】,這樣就指定了一個要比較目錄。這裏我選擇的是標籤2.4.3,選完後會粗體。
    選定比較1
  2. 在另一個要比較的標籤或是分支目錄上右鍵,點菜單項【比較URL】,就會打開【已改變文件】的窗口。
    比較URL
  3. 【已改變文件】的窗口。已改變文件

Thanks for reading, and I hope it can help you :-)


發佈了19 篇原創文章 · 獲贊 6 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章