知道大補帖是啥的可能都… 嗨!歡迎回到上班族的命令列生存手冊。這章是來介紹一些好用的 git
相關工具,本章並不會介紹 git
指令,因為 git
自身也夠寫一個鐵人賽系列了。
例如:
本篇就先預設讀者已經有基礎的自行操作 git
經驗,在這章節會提到:分支,diff,並會提到一些 GitHub 的相關操作,那就讓我們開始囉。
通常切換 branch 有兩個指令可以用,不過需要先知道 branch 的名子。一般來說操作會是這個樣子的:
$ git branch
首先取得目前有哪些分支(branch)在目前的 git repository 呢?挑選後就可以來進行接換啦。目前有 checkout
和 switch
兩種,讀者平常用哪一種呢?我是用第三種,就是 swagit!
只要在 git repository 下 swagit
就會出現以上的互動式界面,能用上下選擇欲前往的分支。也可以直接打字,就會過濾出符合條件的分支,方便切換。這切換方式很直覺,也不用另外去記分支的名子,直接省下一個指令!
除了切換,刪除分支也很麻煩。一樣要先知道想要刪除的分支是哪一條,所以 $ git branch
必不可少,通常太懶惰就會留下一推分支。
$ git branch --d <branch_name>
這樣才會移除本機的分支。但用 swagit
就不用這麼麻煩,只需要進入:
$ swagit -d
看到想要刪除的分支,就按下「空白鍵」,最後按下 Enter。還有很貼心的詢問是否真的要刪除這些分支呢?輸入 y 讓他們清潔溜溜。
一般使用版本控制網站服務時,會利用 Pull Request 或是 Merge Request 來更新主分支。在開發時會去 fetch 最新的變化,並且更新本地的主分支,通常這時會在本地留下已經被 Merge 的分支,又要一個一個清,很麻煩。幸好 swagit
也幫我們考慮到這個情形,只需要:
$ swagit -s
Remote 被移除的分支,本地的也就會自動移除囉。
預設的 $ git diff
很單調,跟筆者寫稿中的人生一樣,如果可以更五顏六色就好了!
還記得 Pager 嗎?在介紹 less
的章節介紹用來看長檔案會用到的工具,這次要介紹的 delta 也是一種 Pager,專門用來查看兩個檔案的對比(Diff)。它可以拿來作為 $ git diff
用的 Pager。
開啟 delta 的安裝頁面,接下來要調整 git 的設定檔。和在前幾章調整 Shell 很類似,git 的設定檔也在家目錄之下,就來調整吧。
$ vim ~/.gitconfig
調整 pager 成 delta,請尋找有沒有以下設定:
[core]
pager = <任何的 pager>
如果發現這類的設定,請把 pager 直接調整成 delta,如果根本找不到就直接加入 pager 設定吧,並且加入以下設定:
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # use n and N to move between diff sections
dark = true # or light = true, or omit for auto-detection
[merge]
conflictStyle = zdiff3
這般調整後,$ git diff
就會長的特別不同,這同時也會影響到 git 的 $ git add --patch
,總之看 git 的 diff 完全被改變了!
如果想要版本控制網站的那種兩邊的該不會也辦得到?沒錯,請加入以下設定到 git 的設定檔,請直接加在 [delta]
區塊裡就行了。
[delta]
side-by-side = true
就會注意到 diff 變成兩邊的囉。
要跟筆者一樣有印出行號,同樣是加到 git 設定檔裡頭的 [delta]
區塊:
[delta]
line-numbers = true
回到 delta 的 git 頁面,會發現它超級強大,還有一堆設定可以調整,包含「主題」可以調整成喜歡的樣子。讀者可以去看 delta 的網頁,並調整成自己喜歡的設定。
等一下?這個人不是出現過了嗎?是時間鉗形攻勢,在上一章節介紹 gh copilot 時就已經點出 gh 指令。如果讀者的 git repository 也有在 GitHub 上面,那 gh
指令就會很有幫助。
$ gh status
就是可以看到目前 Repo 上被 Assign 的 Issue、Pull Request、被 Mention … 等資訊,gh 可以快速操作 GitHub 的功能,比如說切 Issue、建立 Issue,以及 Pull Request 的相關操作。
# 查看 issue 列表
$ gh issue list
# 關 Issue
$ gh issue close <issue_number>
如果把 issue
的部份換成 pr
就有對應的 Pull Request 可以用的動作。拿來查看列表,確認狀態,和關閉 PR、Issue 很方便,雖然可以直接在命令列新增 PR 或是 Issue,有時候即見即所得的圖形界面還是比較直覺,不過讀者也可以自行嘗試也許會喜歡。
下一個章節會來安利各種筆者覺得很好用的工具們,居然含蓋了基礎三劍客,到底有哪些指令這麼讚?下回請繼續收看。
在編輯這篇時,筆者透過朋友 Yuer Lee 知道了新工具 difftastic。
這個工具和一般的 diff 工具不太一樣,它看的懂程式碼結構。當結構有變時,用 difftastic 更能發現異同。