用於 git 指令的簡單終端 UI
所有貢獻者和贊助商使該專案的維護成為可能。如果您想贊助該項目並讓您的頭像或公司徽標出現在下面,請按此處。 ?
咆哮時間:你以前聽說過,git 很強大,但是當一切都那麼難做時,這種力量有什麼用呢?互動式變基需要您在編輯器中編輯一個該死的 TODO 檔案?你在開玩笑吧?要暫存檔案的一部分,您需要使用命令列程式來逐步執行每個區塊,如果一個區塊無法進一步拆分但包含您不想暫存的程式碼,則必須編輯一個神秘的補丁檔案用手?你在開玩笑吧?有時,您會被要求在切換分支時儲存更改,卻發現在切換並取消儲存後甚至沒有任何衝突,直接簽出分支就可以了?你一定是在跟我開玩笑吧!
如果你像我一樣只是一個凡人,並且厭倦了聽到 git 的強大功能,而在你的日常生活中它卻給你帶來了巨大的痛苦,lazygit 可能適合你。
Lazygit 不是我的全職工作,但它是一份繁重的兼職工作,所以如果您想支持該項目,請考慮贊助我
在所選行上按空白鍵將其暫存,或按v
開始選擇一系列行。您也可以按a
選擇整個目前區塊。
按i
開始互動式變基。然後擠壓 ( s
)、修復 ( f
)、刪除 ( d
)、編輯 ( e
)、上移 ( ctrl+i
) 或下移 ( ctrl+j
) 任何 TODO 提交,然後透過調出變基繼續變基使用m
選項選單,然後選擇continue
。
您也可以一次執行任何這些操作(例如,在提交上按s
來壓縮它),而無需明確啟動變基。
該演示還使用 Shift+down 來選擇要移動和修復的提交範圍。
在提交上按shift+c
進行複製,然後按shift+v
進行貼上(擇優選擇)。
在提交檢視中按b
將提交標記為好/壞,以便開始 git bisect。
如果您確實想要刪除執行git status
時顯示的任何內容(是的,包括髒子模組)kidpix 樣式,請按shift+d
調出重設選項選單,然後選擇「nuke」選項。
在任何提交上按shift+a
都會使用目前暫存的變更來修改該提交(在背景執行互動式變基)。
您可以使用/
過濾視圖。在這裡,我們過濾分支視圖,然後按enter
查看其提交。
Lazygit 有一個非常靈活的自訂指令系統。在此範例中,定義了一個模擬內建分支簽出操作的自訂指令。
您可以建立工作樹以同時執行多個分支,而無需在它們之間切換時隱藏或建立 WIP 提交。在分支視圖中按w
可從所選分支建立工作樹並切換至該分支。
您可以從舊提交建立自訂補丁,然後從提交中刪除補丁,拆分出新提交,將補丁反向套用到索引等等。
在這個例子中,我們有一個多餘的註釋,我們想從舊的提交中刪除它。我們在提交上按
鍵查看其文件,然後在文件上按
以聚焦補丁,然後按
將註釋行添加到我們的自訂補丁中,然後ctrl+p
查看自定義補丁選項;選擇從目前提交中刪除補丁。
在 Rebase magic Youtube 教學中了解更多。
假設您所在的功能分支本身是從開發分支分支出來的,並且您決定寧願從主分支分支出來。您需要一種方法來僅對功能分支中的提交進行變基。在此示範中,我們檢查開發分支上的最後一次提交,然後按shift+b
將該提交標記為我們的基本提交,然後在 master 分支上按r
對其進行變基,僅引入來自我們的提交功能分支。然後我們使用shift+p
推送更改。
您可以按下「z」來撤銷上一個動作,然後使用ctrl+z
重做。在這裡,我們刪除了一些提交,然後撤消操作。撤銷使用特定於提交和分支的引用日誌,因此我們無法撤銷對工作樹或儲存的變更。
更多資訊
在放大的視窗中查看提交圖(使用+
和_
循環視窗大小)時,會顯示提交圖。顏色對應於提交作者,當您向下導航圖表時,所選提交的父提交會突出顯示。
如果您在提交(或分支/引用)上按shift+w
,將開啟一個選單,讓您可以標記該提交,以便您選擇的任何其他提交都將與其進行比較。選擇第二次提交後,您將在主視圖中看到差異,如果按
鍵,您將看到差異的檔案。您可以按shift+w
再次查看 diff 選單,以查看反轉 diff 方向或退出 diff 模式等選項。您也可以按
退出 diff 模式。
上述大多數軟體包都是由第三方維護的,因此請務必親自對其進行審查,並確認維護者是一個值得信賴的人,他們會參加當地的體育比賽,並透過燒烤籌款活動等回饋社區
對於 Windows、Mac OS(10.12+) 或 Linux,您可以在此處下載二進位版本。
通常,lazygit 公式可以在 Homebrew 核心中找到,但我們建議您點擊我們的公式來獲得經常更新的公式。它也適用於 Linux。
輕敲:
brew install jesseduffield/lazygit/lazygit
核:
brew install lazygit
從 github 版本建構的最新版本。輕敲:
sudo port install lazygit
Void Linux 的軟體包可在發行版儲存庫中找到
他們關注上游最新版本
sudo xbps-install -S lazygit
您可以使用scoop 安裝lazygit
。它在extras
桶子中:
# Add the extras bucket
scoop bucket add extras
# Install lazygit
scoop install lazygit
Arch Linux 的軟體套件可透過 pacman 和 AUR(Arch 用戶儲存庫)取得。
有兩個包。穩定版是使用最新版本建立的,而 git 版本是根據最近的提交構建的。
sudo pacman -S lazygit
如何安裝 AUR 內容的說明可以在這裡找到:https://wiki.archlinux.org/index.php/Arch_User_Repository
Fedora/RHEL 和 CentOS Stream 的軟體包可透過 Copr(Cool Other Package Repo)取得。
sudo dnf copr enable atim/lazygit -y
sudo dnf install lazygit
sudo eopkg install lazygit
LAZYGIT_VERSION= $( curl -s " https://api.github.com/repos/jesseduffield/lazygit/releases/latest " | grep -Po ' "tag_name": "vK[^"]* ' )
curl -Lo lazygit.tar.gz " https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_ ${LAZYGIT_VERSION} _Linux_x86_64.tar.gz "
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
驗證lazygit安裝是否正確:
lazygit --version
Funtoo Linux 在 dev-kit 中有一個自動產生的lazygit套件:
sudo emerge dev-vcs/lazygit
Lazygit 尚未出現在主要的 Gentoo portage 中,但是 GURU 覆蓋中提供了 ebuild
您可以將覆蓋添加到您的系統並像往常一樣安裝lazygit:
sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit
目前,lazygit 套件是在 devel:languages:go/lazygit 中建構的。
要在 openSUSE Tumbleweed 上安裝lazygit,請運行:
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
若要在 openSUSE Leap 上安裝lazygit,請執行:
source /etc/os-release
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/ $VERSION_ID /devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
在 NixOs 上,lazygit 與 nix 一起打包並透過 nixpkgs 分發。您可以嘗試使用lazygit而不安裝它:
nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit
或者你可以將lazygit加入configuration.nix的environment.systemPackages部分。更多詳細資訊可以透過 NixOs 搜尋頁面找到。
Lazygit 可以安裝到 Flox 環境中,如下所示。
flox install lazygit
有關 Flox 的更多詳細資訊可以在他們的網站上找到。
pkg install lazygit
apt install lazygit
已發布的版本適用於不同平台,請參閱 https://anaconda.org/conda-forge/lazygit
conda install -c conda-forge lazygit
go install github.com/jesseduffield/lazygit@latest
請注意:如果您收到錯誤訊息,聲稱無法找到lazygit或未定義lazygit,您可能需要將~/go/bin
新增至您的 $PATH (MacOS/Linux) 或%HOME%gobin
(Windows) 。不要誤認為C:Gobin
(這是 Go 自己的二進位文件,而不是像lazygit這樣的應用程式)。
你可以使用 Chocolatey 安裝lazygit
:
choco install lazygit
您可以使用 Windows 終端機中的winget
指令來安裝lazygit
,指令如下:
winget install - e -- id = JesseDuffield.lazygit
你需要安裝 Go
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install
您也可以使用go run main.go
一次性編譯和執行(絕對是雙關語)
在 git 儲存庫內的終端機中呼叫lazygit
。
$ lazygit
如果需要,您也可以使用echo "alias lg='lazygit'" >> ~/.zshrc
(或您正在使用的任何 rc 檔案)為此新增別名。
您可以在此處查看鍵綁定清單。
如果您更改lazygit中的儲存庫並希望您的shell在退出lazygit時將目錄更改為該儲存庫,請將其新增至您的~/.zshrc
(或其他rc檔案):
lg()
{
export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}
然後source ~/.zshrc
,從現在開始,當您呼叫lg
並退出時,您將切換目錄到您在lazygit 中所在的目錄。要覆寫此行為,您可以使用shift+Q
而不僅僅是q
退出。
請參閱文檔
查看配置文件。
請參閱文檔
如果lazygit缺少某個功能,您很有可能可以使用自訂指令自己實現它!
請參閱文檔
如果您已安裝,Lazygit 支援 Gitflow。要了解 Gitflow 模型的工作原理,請查看 Vincent Driessen 的原始文章對其進行解釋。若要從 Lazygit 查看 Gitflow 選項,請在分支視圖中按i
。
我們喜歡您的意見!請查看貢獻指南。對於貢獻者關於儲存庫中未更好討論的內容的討論,請加入不和諧頻道
如果您想了解從哪裡開始,請觀看這段視頻,了解如何在lazygit中創建一個小功能。
在一個終端選項卡中執行lazygit --debug
,在另一個終端選項卡中執行lazygit --logs
以並排查看程式及其日誌輸出
如果您想支持lazygit的開發,請考慮贊助我(github正在為12個月內的所有捐款進行一美元對一美元的匹配)
如果您想了解我(Jesse)在開發方面的進展,請在 Twitter 上關注我或查看我的博客
如果您發現lazygit不能完全滿足您的要求,這些可能更適合: