簡介
身為工程師,Git 可以說是吃飯用的工具, Lazygit 是一個用 Golang 寫的 Git 命令列工具,可以大量節省敲 Git 指令的時間。每次省個幾秒鐘,一年省了好幾個小時。
不要跟我說你敲指令很快(你只是懶得多學新工具),或是用了什麼 alias gs='git status'
之類的化名來幫忙你敲得比較快(你只是覺得學很多快捷鍵很恐怖),相信我,絕對不可能比用這個工具還快。
安裝步驟就不詳述了,請看 官方文件 。
介面
安裝完之後在 Repository 底下執行 lazygit
就可以開啟介面。我設了一個化名 alias lg='lazygit'
幫助我敲得更快。
介面主要分為左半邊和右半邊,左半邊有 5 塊,分別是 Status、Files、Local branches、Commits、Stash,其中某些區塊還有分頁可以切換,例如 Files 那個區塊就還有 Worktrees 和 Submodules 這 2 個分頁。
右半邊有兩塊區域,分別是詳細資訊的預覽,以及每個快捷鍵底下呼叫了什麼對應的 Git 指令。
常用快捷鍵
完整的快捷鍵可以參考 官方文件 。
下面是我最常用的幾個快捷鍵:
- 全域
h
和l
:上下切換左半邊的區塊。k
和j
:上下移動光標。/
:搜尋字串。[
和]
:左右切換左半邊區塊的分頁。Ctrl + o
:複製檔名(Files 區塊)、Branch 名稱(Local branches 區塊)、或是 commit hash(commits 區塊)到剪貼簿。q
:退出 Lazygit。
- 左半邊 Files 區塊
- 空白鍵:把該檔案加入或移除自 staging area。
a
:把全部檔案加入或移除自 staging area。Enter
:用在資料夾上為折疊或展開資料夾,用在檔案上則是進入右半邊的檔案預覽區塊。C
:打開外部的文字編輯器,讓我們可以編輯 commit message,之後 commit。A
:Amend commit。d
:取消該檔案還沒有被 commit 的所有變更,注意如果該檔案是新建立的,會被刪除。D
:清空所有檔案還沒有被 commit 的所有變更,當你在做功能的時候不小心搞砸了想重來的時候用的。S
:打開 stash 選項。
- 左半邊 Local branches 區塊
- 空白鍵:切換到該 branch。
n
:從該 branch checkout 出一個新的 branch。f
:Fetch 該 branch 在 remote 的新 commits。r
:Rebase 到該 branch 上面。R
:重新命名 branch。p
:Pull 該 branch。P
:Push 該 branch。o
:開啟 GitHub open pull request 的頁面。Enter
:查看該 branch 的 commit。使用Esc
返回。
- 左半邊 Commits 區塊
Enter
:查看該 commit 改了哪些檔案。使用Esc
返回。R
:打開外部編輯器更改 commit message。d
:刪掉該 commit。g
:打開 reset 選項。F
:創一個對該 commit 的fixup!
commit。S
:Squash 所有在該 commit 之上的fixup!
commits。
- 左半邊 Stash 區塊
g
:套用並刪除該 stash。- 空白鍵:套用但不刪除該 stash。
d
:刪除該 stash。
- 右半邊預覽區塊
v
:進入多行選取模式。- 空白鍵:把該行,或是多行(用多行選取模式選取的話)加入或移除自 staging area。
Esc
:回到左半邊的區塊。
實戰
結合一下之前的 開發開源專案常用的 Git 操作指南 這篇文章,講解一下我怎麼用 Lazygit 來開發開源專案。
開新的 Branch
首先當然是要確保 upstream-master
這個 branch 是和 remote 同步的,先用 h
和 l
切換到 Local branches 區塊,然後用 k
和 j
移動到 upstream-master
這個 branch 上面,之後按 f
去抓取最新變更。接著按 n
開一個新的 branch 即可。
同步 Upstream
一樣先移動到 Local branches 區塊的 upstream-master
這個 branch 上面,然後按 f
抓取最新變更,之後按 r
rebase 到上面。
開發及開 Pull Request
移動到 Files 區塊,使用空白鍵一個一個把檔案加到 staging area,或使用 a
一次加入所有檔案,然後按 C
commit,之後移動到 Local branches 區塊想要 push 的 branch 上面按 P
push,最後按 o
開啟 GitHub pull request 的頁面。
結語
一開始你可能會覺得快捷鍵很多很難學,但用久了就會變成肌肉記憶,省下的時間絕對值得。
如果想了解更多的功能,請到官方的 repo 查看。