本文只是簡單地講述我自己在使用GNU Emacs、Fork,以及Visual Studio Code查看Git倉庫的不同分支的diff上的經歷。
Emacs
當使用Emacs時,我更喜歡用M-x package-install
安裝的magit
提供的功能——magit-diff
,而不是它自帶的vc-dir
。按下M-x
,輸入magit-diff
並敲下回車後,Emacs會在minibuffer中等待用戶輸入要比較的分支。就像在shell中使用git-diff
一樣,只需要輸入兩個以..
連接的分支名並敲下回車,就可以列出它們間的差異。如下圖所示
上圖是master與re兩個分支間的差異。magit-diff
會列出兩個分支間不一致的文件,與直接使用git-diff
命令沒有不同。往下滾動跨過文件清單後,還可以查看單個文件的差異。如下圖所示
Fork
第一次知道Fork是在知乎閒逛的時候,好像是在瀏覽“Mac下有什麼值得推薦的軟件”這類問題時看到的。某一次,爲了能直觀地查看兩個commit間的差異,便試用了一番,效果確實不錯。Fork的界面如下圖所示
還記得,當時爲了能夠比較兩個commit間的差異,我還在Fork的菜單欄中翻了很久——雖然是毫無收穫。結果發現,原來只需要選中兩個commit就可以了。如下圖所示
圖片兩行藍色的就是我選中的兩個commit——先用鼠標點擊其一,按住control
鍵後再選中另一個即可。圖片下方的部分與magit-diff
差不多,應該也算是一目瞭然了。
Visual Studio Code
原本我覺得Fork已經足夠好了,某一天在用VSCode時才忽然發現,在Fork中顯示的代碼差異,是沒有語法高亮的。通常來說,即使沒有語法高亮,查看短小的diff也不成問題。但如果差異的內容很多,或是diff位於一個很長的函數內部,這時光靠diff來做代碼審查已經不太夠了——因爲不好確定在這片diff中出現的變量和函數,到底是不是正確地定義了的。
後來我發現,VSCode自帶的“源代碼管理”,即便是在查看diff時也是有語法高亮的——不僅有語法高亮,對於Node.js代碼而言,還有ESLint的提示和“跳轉到定義”的功能,awesome!不愧是全宇宙最好用的編輯器(笑
爲了可以用VSCode來查看兩個分支間的差異,放狗搜了一下,找到了神器GitLens。
安裝GitLens後,VSCode的最左側會多出一個菜單項,在其中可以方便地選擇兩個分支來進行比較。首先,找到一個要比較的分支,選擇“Select for Compare”。如下圖所示
再選中另一個要比較的分支,右鍵單擊選擇“Compare with Selected”,然後便可以在下方看到VSCode羅列出不一致的文件清單了。如下圖所示
VSCode是最吼的!
全文完。