<div align="center">
<sup>特别鸣谢:</sup>
<br>
<br>
<a href="https://www.warp.dev/?utm_source=github&utm_medium=referral&utm_campaign=lazygit_20231023">
<div>
<img src="https://raw.githubusercontent.com/jesseduffield/lazygit/master/.assets/warp.png" width="230" alt="Warp">
</div>
<b>Warp 是一款基于 Rust 的现代终端,内置 AI 功能,帮助您和您的团队更快地构建优秀软件。</b>
<div>
<sup>访问 warp.dev 了解更多信息。</sup>
</div>
</a>
<br>
<hr>
<a href="https://www.subble.com">
<div>
<img src="https://yellow-cdn.veclightyear.com/835a84d5/7fcad735-1b28-48c3-b695-bde5888eae75.svg" width="230" alt="Subble">
</div>
<b>我(Jesse)共同创立了 Subble,通过帮助您管理公司的软件订阅来节省时间和金钱。欢迎了解!</b>
</a>
<br>
<hr>
</div>
<p align="center">
<img width="536" src="https://yellow-cdn.veclightyear.com/835a84d5/8c4fe6fc-1ea8-43a4-b19a-530bc34c3245.png">
</p>
<div align="center">
一个简单的 git 命令终端用户界面
<br/>


</div>
赞助商
<p align="center">
本项目的维护得益于所有<a href="https://github.com/jesseduffield/lazygit/graphs/contributors">贡献者</a>和<a href="https://github.com/sponsors/jesseduffield">赞助商</a>的支持。如果您想赞助本项目并在下方显示您的头像或公司标志,请<a href="https://github.com/sponsors/jesseduffield">点击这里</a>。💙
</p>
<p align="center">
<!-- 赞助商 --><a href="https://github.com/intabulas"><img src="https://yellow-cdn.veclightyear.com/835a84d5/b6c74fc7-9369-40dc-a357-90a2eb38d241.png" width="60px" alt="Mark Lussier" /></a><a href="https://github.com/peppy"><img src="https://yellow-cdn.veclightyear.com/835a84d5/c51da35d-1530-454c-8190-9868597ef128.png" width="60px" alt="Dean Herbert" /></a><a href="https://github.com/piot"><img src="https://yellow-cdn.veclightyear.com/835a84d5/4c92788b-30de-4ddd-a1c5-54e0839eda5b.png" width="60px" alt="Peter Bjorklund" /></a><a href="https://github.com/rgwood"><img src="https://yellow-cdn.veclightyear.com/835a84d5/d0a07c8b-0359-4a1d-bc50-70803fcc1d3d.png" width="60px" alt="Reilly Wood" /></a><a href="https://github.com/oliverguenther"><img src="https://yellow-cdn.veclightyear.com/835a84d5/c5e12e12-ec3b-44e7-9eb0-fd7cbe9e55b9.png" width="60px" alt="Oliver Günther" /></a><a href="https://github.com/pawanjay176"><img src="https://yellow-cdn.veclightyear.com/835a84d5/4a71ac8b-74c1-42c6-90c5-334e05fcebb7.png" width="60px" alt="Pawan Dhananjay" /></a><a href="https://github.com/bdach"><img src="https://yellow-cdn.veclightyear.com/835a84d5/fcd47971-ad91-4756-8814-488330deda4a.png" width="60px" alt="Bartłomiej Dach" /></a><a href="https://github.com/carstengehling"><img src="https://yellow-cdn.veclightyear.com/835a84d5/277230c8-9c2f-4d35-b9be-e0ec5681d1a9.png" width="60px" alt="Carsten Gehling" /></a><a href="https://github.com/ceuk"><img src="https://yellow-cdn.veclightyear.com/835a84d5/6fab6d4b-ca01-4116-addf-fba4901a62a3.png" width="60px" alt="CEUK" /></a><a href="https://github.com/akospwc"><img src="https://yellow-cdn.veclightyear.com/835a84d5/41df6de9-2f0a-42e1-9ead-82b2987fb220.png" width="60px" alt="Akos Putz" /></a><a href="https://github.com/Xetera"><img src="https://yellow-cdn.veclightyear.com/835a84d5/033574cd-8870-4689-a593-ffc93e791f8e.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://yellow-cdn.veclightyear.com/835a84d5/34d0b30e-84e1-4dba-82ab-ba87b5cc5636.png" width="60px" alt="Holden Lucas" /></a><a href="https://github.com/nartc"><img src="https://yellow-cdn.veclightyear.com/835a84d5/66133b22-aed9-4bef-86a7-06c2df1da277.png" width="60px" alt="Chau Tran" /></a><a href="https://github.com/matejcik"><img src="https://yellow-cdn.veclightyear.com/835a84d5/7c591426-0a53-4496-b884-7a6c25c1ce24.png" width="60px" alt="matejcik" /></a><a href="https://github.com/lucatume"><img src="https://yellow-cdn.veclightyear.com/835a84d5/2fe67184-fd2b-4427-91ce-f71c15f946a5.png" width="60px" alt="theAverageDev (Luca Tumedei)" /></a><a href="https://github.com/IvanZuy"><img src="https://yellow-cdn.veclightyear.com/835a84d5/b1a572b0-34cc-4c9d-9743-25a6264f09c8.png" width="60px" alt="Ivan Zaitsev" /></a><a href="https://github.com/nicholascloud"><img src="https://yellow-cdn.veclightyear.com/835a84d5/b6e36664-7bb4-4554-8f5e-4b4615032f8a.png" width="60px" alt="Nicholas Cloud" /></a><a href="https://github.com/PhotonQuantum"><img src="https://yellow-cdn.veclightyear.com/835a84d5/ebe1eed8-3d3e-4f1d-ab23-a118bd46fd48.png" width="60px" alt="LightQuantum" /></a><a href="https://github.com/GitSquared"><img src="https://yellow-cdn.veclightyear.com/835a84d5/8634314d-095b-474f-b9da-9029e9acc632.png" width="60px" alt="Gabriel Saillard" /></a><a href="https://github.com/ava1ar"><img src="https://yellow-cdn.veclightyear.com/835a84d5/a04b4af1-02fa-47cf-958f-79c1daaf8be1.png" width="60px" alt="Aliaksandr Stelmachonak" /></a><a href="https://github.com/minidfx"><img src="https://yellow-cdn.veclightyear.com/835a84d5/2bec5e42-533e-4725-9cb5-878f3f096ba6.png" width="60px" alt="Burgy Benjamin" /></a><a href="https://github.com/JoeKlemmer"><img src="https://yellow-cdn.veclightyear.com/835a84d5/ab2c446b-4113-44f1-9c24-e3f712a8e88a.png" width="60px" alt="Joe Klemmer" /></a><a href="https://github.com/tobi"><img src="https://yellow-cdn.veclightyear.com/835a84d5/984686f3-6b51-4dfb-b0e4-9625fb53008c.png" width="60px" alt="Tobias Lütke" /></a><a href="https://github.com/benbfortis"><img src="https://yellow-cdn.veclightyear.com/835a84d5/18a748fd-1e57-42fb-a365-60bb501f8974.png" width="60px" alt="Ben Beaumont" /></a><a href="https://github.com/jakewarren"><img src="https://yellow-cdn.veclightyear.com/835a84d5/f00d47ad-24de-4a48-bfbe-6320dca65e44.png" width="60px" alt="" /></a><a href="https://github.com/tgpholly"><img src="https://yellow-cdn.veclightyear.com/835a84d5/3d8161d0-99a7-4d7a-a25d-6c62fb54132a.png" width="60px" alt="Holly" /></a><a href="https://github.com/bitprophet"><img src="https://yellow-cdn.veclightyear.com/835a84d5/63c99294-6b7d-46b2-8dfb-3cff5d6a461d.png" width="60px" alt="Jeff Forcier" /></a><a href="https://github.com/tayleighr"><img src="https://yellow-cdn.veclightyear.com/835a84d5/082f17b3-70b5-4f03-b05a-17e2554cc714.png" width="60px" alt="" /></a><a href="https://github.com/Novakov"><img
src="https://yellow-cdn.veclightyear.com/835a84d5/e2e885a2-c1a2-49e4-9150-9946af5df1eb.png" width="60px" alt="Maciej T. Nowak" /></a><a href="https://github.com/farzadmf"><img src="https://yellow-cdn.veclightyear.com/835a84d5/5a5cde75-1d14-4534-be90-2916bfd39b60.png" width="60px" alt="Farzad Majidfayyaz" /></a><a href="https://github.com/nekhaevskiy"><img src="https://yellow-cdn.veclightyear.com/835a84d5/dbfe839e-fd3d-4c38-8983-16b8e5f1256e.png" width="60px" alt="Yury" /></a><a href="https://github.com/reivilibre"><img src="https://yellow-cdn.veclightyear.com/835a84d5/27e9e17d-a516-4524-a881-a14a18b1dcbe.png" width="60px" alt="" /></a><a href="https://github.com/andreaskurth"><img src="https://yellow-cdn.veclightyear.com/835a84d5/8cfd8751-e497-4e77-b2fe-33e5fe81b93c.png" width="60px" alt="Andreas Kurth" /></a><a href="https://github.com/BSteffaniak"><img src="https://yellow-cdn.veclightyear.com/835a84d5/54e776cc-d961-4ddd-93c2-e60c319f99c9.png" width="60px" alt="Braden Steffaniak" /></a><a href="https://github.com/jordan-gillard"><img src="https://yellow-cdn.veclightyear.com/835a84d5/ab3b303a-be2b-486e-9ba0-00561a6a548d.png" width="60px" alt="Jordan Gillard" /></a><a href="https://github.com/smangels"><img src="https://yellow-cdn.veclightyear.com/835a84d5/b90152f9-fb28-4962-b611-3f0787f0e124.png" width="60px" alt="Sebastian" /></a><a href="https://github.com/George-Spanos"><img src="https://yellow-cdn.veclightyear.com/835a84d5/cb906d5e-cc42-4b48-8efd-00a199e76f2c.png" width="60px" alt="George Spanos" /></a><a href="https://github.com/amslezak"><img src="https://yellow-cdn.veclightyear.com/835a84d5/0530c915-7816-4a87-9bfc-19abf10bbaa2.png" width="60px" alt="Andy Slezak" /></a><a href="https://github.com/mkock"><img src="https://yellow-cdn.veclightyear.com/835a84d5/e6a0e2bb-2e02-4d48-9c00-958a619852f7.png" width="60px" alt="Martin Kock" /></a><a href="https://github.com/illarionvk"><img src="https://yellow-cdn.veclightyear.com/835a84d5/802316be-1a47-4eb0-83d5-b70eb3422fcf.png" width="60px" alt="Illarion Koperski" /></a><a href="https://github.com/jessealama"><img src="https://yellow-cdn.veclightyear.com/835a84d5/38346a76-63cc-4f4f-b271-f7d1870a7cc3.png" width="60px" alt="Jesse Alama" /></a><a href="https://github.com/codacy"><img src="https://yellow-cdn.veclightyear.com/835a84d5/18fcb773-f929-4a6e-93cd-f542f4dfae68.png" width="60px" alt="Codacy" /></a><a href="https://github.com/colbr"><img src="https://yellow-cdn.veclightyear.com/835a84d5/9c6fd320-1d4d-40b3-8093-226bdbbd26aa.png" width="60px" alt="Brett" /></a><a href="https://github.com/heijmans"><img src="https://yellow-cdn.veclightyear.com/835a84d5/0eafbd54-5877-431d-9de5-076b258f3df0.png" width="60px" alt="Jan Heijmans" /></a><a href="https://github.com/Vesther"><img src="https://yellow-cdn.veclightyear.com/835a84d5/53c4d539-a0a2-4360-9301-0abdf1435ef6.png" width="60px" alt="Kevin Nowald" /></a><a href="https://github.com/sempruijs"><img src="https://yellow-cdn.veclightyear.com/835a84d5/ec678509-3f50-4b13-9d26-178ee4fcc7e5.png" width="60px" alt="sem pruijs" /></a><a href="https://github.com/omarluq"><img src="https://yellow-cdn.veclightyear.com/835a84d5/a37573af-b4a8-4554-9fe6-13750719a77c.png" width="60px" alt="Omar Luq " /></a><a href="https://github.com/arcanemachine"><img src="https://yellow-cdn.veclightyear.com/835a84d5/f3dac8f5-eebd-495d-b140-34c4878f7dd6.png" width="60px" alt="Nicholas Moen" /></a><a href="https://github.com/ethanjli"><img src="https://yellow-cdn.veclightyear.com/835a84d5/7d1b3f09-4e36-45b1-b19f-dfea8adaa2d1.png" width="60px" alt="Ethan Li" /></a><a href="https://github.com/phubaba"><img src="https://yellow-cdn.veclightyear.com/835a84d5/3e9a84e4-c411-4e11-8b75-551ee7de4521.png" width="60px" alt="" /></a><a href="https://github.com/fomrat"><img src="https://yellow-cdn.veclightyear.com/835a84d5/ee6cab22-7cb4-4154-bc73-9008f462a318.png" width="60px" alt="Brian MacAskill" /></a><a href="https://github.com/canhazcodez"><img src="https://yellow-cdn.veclightyear.com/835a84d5/7f6e0e7d-59c7-4e6b-98f5-66328f93b9dd.png" width="60px" alt="Maxi" /></a><a href="https://github.com/nikbrunner"><img src="https://yellow-cdn.veclightyear.com/835a84d5/31e74d91-a1ad-4a18-b973-1807e2d65ff1.png" width="60px" alt="nbr" /></a><a href="https://github.com/mikybars"><img src="https://yellow-cdn.veclightyear.com/835a84d5/30eec729-1498-40fd-a380-2fc665820e93.png" width="60px" alt="Miguel Ibars" /></a><a href="https://github.com/neunkasulle"><img src="https://yellow-cdn.veclightyear.com/835a84d5/72a3e1e7-16d2-4185-8282-4c62b403ed4d.png" width="60px" alt="Jan Zenkner" /></a><a href="https://github.com/ahkohd"><img src="https://yellow-cdn.veclightyear.com/835a84d5/ec6310d6-c8ad-4d20-9e1b-f07d96458b67.png" width="60px" alt="Victor Aremu" /></a><a href="https://github.com/RVxLab"><img src="https://yellow-cdn.veclightyear.com/835a84d5/1c9490bc-084c-47bd-9dde-1c75a14266c0.png"
width="60px" alt="" /></a><a href="https://github.com/igor-ramazanov"><img src="https://yellow-cdn.veclightyear.com/835a84d5/f137d200-5e0d-4fbe-a609-53ec98e0b858.png" width="60px" alt="Igor Ramazanov" /></a><a href="https://github.com/glotchimo"><img src="https://yellow-cdn.veclightyear.com/835a84d5/451b09dd-aecb-4713-a28b-1f8bbfe583ae.png" width="60px" alt="Elliott Maguire" /></a><a href="https://github.com/n8nio"><img src="https://yellow-cdn.veclightyear.com/835a84d5/4722b62a-e70e-4798-ba34-f55d561cbb80.png" width="60px" alt="n8n - 工作流自动化" /></a><a href="https://github.com/joshuadavidthomas"><img src="https://yellow-cdn.veclightyear.com/835a84d5/3fb88728-84c2-44c0-993f-05492ca29654.png" width="60px" alt="Josh Thomas" /></a><a href="https://github.com/josephjacks"><img src="https://yellow-cdn.veclightyear.com/835a84d5/de9c2733-7be3-4b89-a5f5-f0bdd0b50051.png" width="60px" alt="JJ" /></a><a href="https://github.com/FrederickGeek8"><img src="https://yellow-cdn.veclightyear.com/835a84d5/a3b8ee6c-7d7b-4378-94cc-c1aeca24b61d.png" width="60px" alt="Frederick Morlock" /></a><a href="https://github.com/agrippanux"><img src="https://yellow-cdn.veclightyear.com/835a84d5/2f3de2fe-2961-4d6f-b7e6-bacbd2a8df26.png" width="60px" alt="Darren Craine" /></a><a href="https://github.com/ezdac"><img src="https://yellow-cdn.veclightyear.com/835a84d5/f9e45027-e2f3-4205-b2e3-065d94f127e8.png" width="60px" alt="Maximilian Langenfeld" /></a><a href="https://github.com/sarzhann"><img src="https://yellow-cdn.veclightyear.com/835a84d5/05f8c650-16d5-481a-a53c-4227c9a6d8b4.png" width="60px" alt="Nurzhan" /></a><a href="https://github.com/dbuls"><img src="https://yellow-cdn.veclightyear.com/835a84d5/d741a519-67fa-41ca-987a-d7092c1f4ee3.png" width="60px" alt="Davis Buls" /></a><a href="https://github.com/lppassos"><img src="https://yellow-cdn.veclightyear.com/835a84d5/05eb6794-ae6b-4acc-89c3-3ee251667002.png" width="60px" alt="" /></a><a href="https://github.com/chrisolsen"><img src="https://yellow-cdn.veclightyear.com/835a84d5/b1b43a94-edf6-4eeb-9ca8-b638a7a9403b.png" width="60px" alt="Chris Olsen" /></a><a href="https://github.com/neilcode"><img src="https://yellow-cdn.veclightyear.com/835a84d5/37aeb7b8-2c4b-4e4c-8b1b-fa190c7236fc.png" width="60px" alt="Neil Lambert" /></a><a href="https://github.com/dhh"><img src="https://yellow-cdn.veclightyear.com/835a84d5/4a0872d8-689a-4d53-baaf-8bf0db41227e.png" width="60px" alt="David Heinemeier Hansson" /></a><a href="https://github.com/mmv08"><img src="https://yellow-cdn.veclightyear.com/835a84d5/acffc1f4-990f-4a1d-8132-4d2292969c02.png" width="60px" alt="Mikhail" /></a><a href="https://github.com/macmiranda"><img src="https://yellow-cdn.veclightyear.com/835a84d5/e1e53945-996e-469f-bc54-e1047d3eda83.png" width="60px" alt="Marco Aurelio Caldas Miranda" /></a><a href="https://github.com/osarogie"><img src="https://yellow-cdn.veclightyear.com/835a84d5/63cfb9c7-87c7-471f-9e36-7a84ed9f8e48.png" width="60px" alt="Emmanuel Nosakhare" /></a><a href="https://github.com/ethanfischer"><img src="https://yellow-cdn.veclightyear.com/835a84d5/ca68d02d-7a9f-4f0f-9634-1dc122d7bb22.png" width="60px" alt="Ethan Fischer" /></a><a href="https://github.com/poshboytl"><img src="https://yellow-cdn.veclightyear.com/835a84d5/8410a626-22f2-4a0e-8fa5-03c5357434e9.png" width="60px" alt="Terry Tai" /></a><a href="https://github.com/a-jentleman"><img src="https://yellow-cdn.veclightyear.com/835a84d5/9fbac626-7bc8-4990-b0d1-e626312289fa.png" width="60px" alt="" /></a><a href="https://github.com/roesnera"><img src="https://yellow-cdn.veclightyear.com/835a84d5/7ffb861e-993d-493d-8997-320a7055cc16.png" width="60px" alt="Adam Roesner" /></a><a href="https://github.com/herdingdata"><img src="https://yellow-cdn.veclightyear.com/835a84d5/358b5a68-4da3-4477-a2f1-b5d8116cfe0f.png" width="60px" alt="Andy Herd" /></a><a href="https://github.com/wassimk"><img src="https://yellow-cdn.veclightyear.com/835a84d5/7672e4d1-4a91-45dd-90e3-d24562dcd483.png" width="60px" alt="Wassim Metallaoui" /></a><a href="https://github.com/tornikegomareli"><img src="https://yellow-cdn.veclightyear.com/835a84d5/daa464dd-215c-423b-87d0-668469eff135.png" width="60px" alt="Tornike Gomareli" /></a><a href="https://github.com/seven1m"><img src="https://yellow-cdn.veclightyear.com/835a84d5/3cf5cfb8-b115-4741-9d86-7ffc18123723.png" width="60px" alt="Tim Morgan" /></a><a href="https://github.com/sgoridotla1"><img src="https://yellow-cdn.veclightyear.com/835a84d5/748cb9d5-4ebc-4ad2-8f39-5d2d853891b9.png" width="60px" alt="Max Shypulniak" /></a><a href="https://github.com/meshanator"><img src="https://yellow-cdn.veclightyear.com/835a84d5/2c77e462-aefe-44f8-81a0-10110e68e06d.png" width="60px" alt="Meshan Naidoo" /></a><a href="https://github.com/kyu08"><img src="https://yellow-cdn.veclightyear.com/835a84d5/aa171060-ef45-42da-a289-1f4c46bd076b.png" width="60px" alt="kyu08" /></a><a href="https://github.com/piacsek"><img
src="https://yellow-cdn.veclightyear.com/835a84d5/351627bd-e86f-48c9-a3f2-0a72ef2de6b5.png" width="60px" alt="Felipe Piacsek" /></a><a href="https://github.com/dimaunx"><img src="https://yellow-cdn.veclightyear.com/835a84d5/7c2d4ef6-faec-4211-9bdb-13b762732173.png" width="60px" alt="dimaunx" /></a><a href="https://github.com/ADIX7"><img src="https://yellow-cdn.veclightyear.com/835a84d5/736af26e-2525-4ddb-978e-c8fba3f8a0a9.png" width="60px" alt="Kovács Ádám" /></a><a href="https://github.com/MatthewYe"><img src="https://yellow-cdn.veclightyear.com/835a84d5/e0f976d4-47b0-4942-8ad4-a3f9a3795809.png" width="60px" alt="叶博" /></a><a href="https://github.com/DusanLesan"><img src="https://yellow-cdn.veclightyear.com/835a84d5/dc5cdc66-61b6-437b-ab55-672c3b980f4c.png" width="60px" alt="Dusan Lesan" /></a><a href="https://github.com/iantanwx"><img src="https://yellow-cdn.veclightyear.com/835a84d5/1f8872a3-8a15-4d2b-bbd9-2e82b9de8c81.png" width="60px" alt="Ian Tan" /></a><a href="https://github.com/maulik13"><img src="https://yellow-cdn.veclightyear.com/835a84d5/e3d77cfb-70e4-4347-b1a4-9a1305f13de3.png" width="60px" alt="Maulik Kataria" /></a><a href="https://github.com/ChanhLy"><img src="https://yellow-cdn.veclightyear.com/835a84d5/f1371707-2230-4086-a55b-629bffdba96b.png" width="60px" alt="ChanhLy" /></a><a href="https://github.com/enzosterro"><img src="https://yellow-cdn.veclightyear.com/835a84d5/6f1fab61-63fc-4f1b-9140-13d05b9bf0a6.png" width="60px" alt="Enzo Sterro" /></a><a href="https://github.com/tfeldmann"><img src="https://yellow-cdn.veclightyear.com/835a84d5/f46effd1-abb6-4cfd-8b71-0db907554e7b.png" width="60px" alt="Thomas Feldmann" /></a><!-- 赞助商 -->
</p>
## 电梯演讲
牢骚时间:你以前听说过,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)它。

二分查找
在提交视图中按 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>
退出差异模式。

教程
<img src="https://i.imgur.com/sVEktDn.png">
安装

上述大多数软件包由第三方维护,因此请务必自行验证,并确认维护者是看起来值得信赖的人,他们参加当地体育比赛并通过烧烤筹款等方式回馈社区
二进制发布
对于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 频道
<a href="https://discord.gg/ehwFt2t4wt"><img src='https://raw.githubusercontent.com/jesseduffield/lazygit/master/.assets/discord.png' width='75'></a>
如果你想了解从哪里开始,可以查看这个视频,它演示了在 lazygit 中创建一个小功能的过程。
本地调试
在一个终端标签页中运行 lazygit --debug
,在另一个标签页中运行 lazygit --logs
,以并排查看程序及其日志输出。
捐赠
如果你想支持 lazygit 的开发,可以考虑赞助我(GitHub 将在 12 个月内对所有捐款进行一比一匹配)
常见问题
提交颜色代表什么?
- 绿色:该提交包含在主分支中
- 黄色:该提交不包含在主分支中
- 红色:该提交尚未推送到上游分支
自荐
如果你想了解我(Jesse)在开发方面的近况,可以在 Twitter 上关注我或查看我的博客
替代方案
如果你发现 lazygit 不能完全满足你的需求,以下可能是更好的选择: