Project Icon

lazygit

终端界面优化Git命令操作

lazygit为Git命令提供直观的终端操作界面,简化代码仓库管理、提交更改和推送流程。支持多平台,具有活跃社区和持续更新。适合各级开发者使用,有效提升Git工作效率。

一个简单的 git 命令终端用户界面

GitHub Releases Go Report Card Codacy Badge Codacy Badge GolangCI GitHub tag homebrew

commit_and_push

赞助商

本项目的维护得益于所有贡献者赞助商的支持。如果您想赞助本项目并在下方显示您的头像或公司标志,请点击这里。💙

Mark LussierDean HerbertPeter BjorklundReilly WoodOliver GüntherPawan DhananjayBartłomiej DachCarsten GehlingCEUKAkos PutzHolden LucasChau TranmatejciktheAverageDev (Luca Tumedei)Ivan ZaitsevNicholas CloudLightQuantumGabriel SaillardAliaksandr StelmachonakBurgy BenjaminJoe KlemmerTobias LütkeBen BeaumontHollyJeff ForcierMaciej T. NowakFarzad MajidfayyazYuryAndreas KurthBraden SteffaniakJordan GillardSebastianGeorge SpanosAndy SlezakMartin KockIllarion KoperskiJesse AlamaCodacyBrettJan HeijmansKevin Nowaldsem pruijsOmar Luq Nicholas MoenEthan LiBrian MacAskillMaxinbrMiguel IbarsJan ZenknerVictor AremuIgor RamazanovElliott Maguiren8n - 工作流自动化Josh ThomasJJFrederick MorlockDarren CraineMaximilian LangenfeldNurzhanDavis BulsChris OlsenNeil LambertDavid Heinemeier HanssonMikhailMarco Aurelio Caldas MirandaEmmanuel NosakhareEthan FischerTerry TaiAdam RoesnerAndy HerdWassim MetallaouiTornike GomareliTim MorganMax ShypulniakMeshan Naidookyu08Felipe PiacsekdimaunxKovács Ádám叶博Dusan LesanIan TanMaulik KatariaChanhLyEnzo SterroThomas Feldmann

## 电梯演讲

牢骚时间:你以前听说过,git 很强大,但当一切都难以操作时,这种力量有什么用?交互式变基需要你在编辑器中编辑一个该死的 TODO 文件?开玩笑吗?要暂存文件的一部分,你需要使用命令行程序逐步检查每个代码块,如果一个代码块无法进一步拆分但包含你不想暂存的代码,你必须手动编辑一个晦涩难懂的补丁文件?你在逗我吗?有时在切换分支时系统会要求你暂存更改,但切换并取消暂存后才发现根本没有冲突,直接检出分支就可以了?你一定是在开玩笑!

如果你像我一样只是个凡人,厌倦了听说 git 有多强大,而在日常生活中它只是让你痛苦不堪,那么 lazygit 可能适合你。

目录

Lazygit 不是我的全职工作,但它确实是一份相当繁重的兼职工作,所以如果你想支持这个项目,请考虑赞助我

功能

暂存单独的行

在选中的行上按空格键可以暂存它,或者按 v 开始选择一系列行。你也可以按 a 选择当前代码块的全部内容。

暂存行

交互式变基

i 开始交互式变基。然后可以压缩(s)、修复(f)、删除(d)、编辑(e)、向上移动(ctrl+i)或向下移动(ctrl+j)任何待办提交,然后通过按 m 调出变基选项菜单并选择"继续"来完成变基。

你也可以在不显式启动变基的情况下执行这些操作(例如,在提交上按 s 来压缩它)。

这个演示还使用 shift+下箭头选择要移动和修复的一系列提交。

交互式变基

Cherry-pick

在提交上按 shift+c 复制它,然后按 shift+v 粘贴(cherry-pick)它。

cherry-pick

二分查找

在提交视图中按 b 将提交标记为好/坏,以开始 git 二分查找。

二分查找

清空工作树

当你真的想清除运行 git status 时显示的所有内容(是的,包括脏子模块)时,按 shift+d 调出重置选项菜单,然后选择"清空"选项。

清空工作树

修改旧提交

在任何提交上按 shift+a 将使用当前暂存的更改来修改该提交(在后台运行交互式变基)。

修改旧提交

过滤

你可以使用 / 过滤视图。这里我们过滤分支视图,然后按 enter 查看其提交。

过滤

调用自定义命令

Lazygit 有一个非常灵活的自定义命令系统。在这个例子中,定义了一个模拟内置分支检出操作的自定义命令。

自定义命令

工作树

你可以创建工作树,同时处理多个分支,而无需在它们之间切换时进行暂存或创建临时提交。在分支视图中按 w 可以从选定的分支创建工作树并切换到它。

从分支创建工作树

变基魔法(自定义补丁)

你可以从旧提交构建自定义补丁,然后从提交中移除该补丁,拆分出新的提交,将补丁反向应用到索引等。

在这个例子中,我们有一个想要从旧提交中删除的多余注释。我们在提交上按 <enter> 查看其文件,然后在文件上按 <enter> 聚焦补丁,接着按 <space> 将注释行添加到我们的自定义补丁中,最后按 ctrl+p 查看自定义补丁选项;选择从当前提交中移除补丁。

变基魔法 YouTube 教程中了解更多信息。

自定义补丁

从标记的基础提交变基

假设你在一个从 develop 分支分出的特性分支上工作,现在你决定想从 master 分支分出。你需要一种方法只变基你特性分支的提交。在这个演示中,我们先检查 develop 分支上的最后一个提交,然后按 shift+b 将该提交标记为我们的基础提交,接着在 master 分支上按 r 进行变基,只带上特性分支的提交。然后我们用 shift+p 推送更改。

变基到

撤销

你可以按 'z' 撤销最后一个操作,按 ctrl+z 重做。这里我们删除了几个提交,然后撤销了这些操作。 撤销使用引用日志,引用日志是特定于提交和分支的,所以我们无法撤销对工作树或暂存区的更改。

更多信息 撤销

提交图

当在放大的窗口中查看提交图时(使用+_循环切换窗口大小),会显示提交图。颜色对应提交作者,当你在图中导航时,所选提交的父提交会被高亮显示。

提交图

比较两个提交

如果你在一个提交(或分支/引用)上按shift+w,会打开一个菜单,允许你标记该提交,这样你选择的任何其他提交都会与之进行对比。选择第二个提交后,你会在主视图中看到差异,如果按<enter>,你将看到差异的文件。你可以按shift+w再次查看差异菜单,查看诸如反转差异方向或退出差异模式等选项。你也可以按<escape>退出差异模式。

对比提交

教程

安装

打包状态

上述大多数软件包由第三方维护,因此请务必自行验证,并确认维护者是看起来值得信赖的人,他们参加当地体育比赛并通过烧烤筹款等方式回馈社区

二进制发布

对于Windows、Mac OS(10.12+)或Linux,你可以在这里下载二进制发布版。

Homebrew

通常lazygit公式可以在Homebrew核心仓库中找到,但我们建议你使用我们的公式以获得频繁更新的版本。它也适用于Linux。

使用tap:

brew install jesseduffield/lazygit/lazygit

使用核心仓库:

brew install lazygit

MacPorts

从github发布构建的最新版本。 使用tap:

sudo port install lazygit

Void Linux

Void Linux的软件包可在发行版仓库中获得

它们跟随上游最新发布

sudo xbps-install -S lazygit

Scoop (Windows)

你可以使用scoop安装lazygit。它在extras桶中:

# 添加extras桶
scoop bucket add extras

# 安装lazygit
scoop install lazygit

Arch Linux

Arch Linux的软件包可通过pacman和AUR(Arch用户仓库)获得。

有两个软件包。稳定版基于最新发布构建,git版本基于最近的提交构建。

如何安装AUR内容的说明可以在这里找到: https://wiki.archlinux.org/index.php/Arch_User_Repository

Fedora和RHEL

Fedora/RHEL和CentOS Stream的软件包可通过Copr(Cool Other Package Repo)获得。

sudo dnf copr enable atim/lazygit -y
sudo dnf install lazygit

Solus Linux

sudo eopkg install lazygit

Ubuntu

LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
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

Funtoo Linux在dev-kit中有一个自动生成的lazygit软件包:

sudo emerge dev-vcs/lazygit

Gentoo Linux

Lazygit目前还不在Gentoo主要portage中,但在GURU overlay中有一个ebuild可用

你可以将overlay添加到你的系统并像往常一样安装lazygit:

sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit

openSUSE

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

在NixOs上,lazygit通过nix打包并通过nixpkgs分发。 你可以在不安装的情况下尝试lazygit:

nix-shell -p lazygit
# 或者启用flakes
nix run nixpkgs#lazygit

或者你可以在configuration.nix的environment.systemPackages部分添加lazygit。 更多详情可以在NixOs搜索页面找到。

Flox

Lazygit可以按以下方式安装到Flox环境中。

flox install lazygit

关于Flox的更多详情可以在他们的网站上找到。

FreeBSD

pkg install lazygit

Termux

apt install lazygit

Conda

不同平台的发布版本可在https://anaconda.org/conda-forge/lazygit获得

conda install -c conda-forge lazygit

Go

go install github.com/jesseduffield/lazygit@latest

请注意: 如果你收到声称找不到lazygit或未定义lazygit的错误,你可能需要将~/go/bin添加到你的$PATH(MacOS/Linux),或%HOME%\go\bin(Windows)。不要与C:\Go\bin混淆(后者是Go自己的二进制文件,而不是像lazygit这样的应用程序)。

Chocolatey (Windows)

你可以使用Chocolatey安装lazygit

choco install lazygit

Winget (Windows 10 1709或更高版本)

你可以在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中更改了仓库,并希望在退出lazygit时你的shell更改到该仓库的目录,请在你的~/.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 缺少某个功能,你很有可能可以通过自定义命令来实现!

查看文档

Git flow 支持

如果你已安装 Gitflow,Lazygit 支持它。要了解 Gitflow 模型的工作原理,请查看 Vincent Driessen 的原始文章。要在 Lazygit 中查看 Gitflow 选项,请在分支视图中按 i

贡献

我们非常欢迎你的贡献!请查看贡献指南。 对于不适合在此仓库讨论的贡献者讨论,请加入 Discord 频道

如果你想了解从哪里开始,可以查看这个视频,它演示了在 lazygit 中创建一个小功能的过程。

本地调试

在一个终端标签页中运行 lazygit --debug,在另一个标签页中运行 lazygit --logs,以并排查看程序及其日志输出。

捐赠

如果你想支持 lazygit 的开发,可以考虑赞助我(GitHub 将在 12 个月内对所有捐款进行一比一匹配)

常见问题

提交颜色代表什么?

  • 绿色:该提交包含在主分支中
  • 黄色:该提交不包含在主分支中
  • 红色:该提交尚未推送到上游分支

自荐

如果你想了解我(Jesse)在开发方面的近况,可以在 Twitter 上关注我或查看我的博客

替代方案

如果你发现 lazygit 不能完全满足你的需求,以下可能是更好的选择:

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号