用于 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不能完全满足您的要求,这些可能更适合: