README.md 15.9 KB
Newer Older
大地缸's avatar
lazy  
大地缸 committed
1
2
3
<p align="center">
  <img width="536" src="https://user-images.githubusercontent.com/8456633/174470852-339b5011-5800-4bb9-a628-ff230aa8cd4e.png">
</p>
大地缸's avatar
init  
大地缸 committed
4
5


大地缸's avatar
lazy  
大地缸 committed
6
7
8
9
10
11
12
![CI](https://github.com/jesseduffield/lazygit/workflows/Continuous%20Integration/badge.svg)
[![Go Report Card](https://goreportcard.com/badge/github.com/jesseduffield/lazygit)](https://goreportcard.com/report/github.com/jesseduffield/lazygit)
[![GolangCI](https://golangci.com/badges/github.com/jesseduffield/lazygit.svg)](https://golangci.com)
[![GoDoc](https://godoc.org/github.com/jesseduffield/lazygit?status.svg)](http://godoc.org/github.com/jesseduffield/lazygit)
[![GitHub Releases](https://img.shields.io/github/downloads/jesseduffield/lazygit/total)](https://github.com/jesseduffield/lazygit/releases)
[![GitHub tag](https://img.shields.io/github/tag/jesseduffield/lazygit.svg)](https://github.com/jesseduffield/lazygit/releases/latest)
[![homebrew](https://img.shields.io/homebrew/v/lazygit)](https://github.com/Homebrew/homebrew-core/blob/master/Formula/lazygit.rb)
大地缸's avatar
init  
大地缸 committed
13

大地缸's avatar
lazy  
大地缸 committed
14
A simple terminal UI for git commands, written in Go with the [gocui](https://github.com/jroimartin/gocui "gocui") library.
大地缸's avatar
init  
大地缸 committed
15

大地缸's avatar
lazy  
大地缸 committed
16
![Gif](../assets/staging.gif)
大地缸's avatar
init  
大地缸 committed
17

大地缸's avatar
lazy  
大地缸 committed
18
## Sponsors
大地缸's avatar
init  
大地缸 committed
19

大地缸's avatar
lazy  
大地缸 committed
20
21
22
<p align="center">
 Maintenance of this project is made possible by all the <a href="https://github.com/jesseduffield/lazygit/graphs/contributors">contributors</a> and <a href="https://github.com/sponsors/jesseduffield">sponsors</a>. If you'd like to sponsor this project and have your avatar or company logo appear below <a href="https://github.com/sponsors/jesseduffield">click here</a>. 💙
</p>
大地缸's avatar
init  
大地缸 committed
23

大地缸's avatar
lazy  
大地缸 committed
24
25
26
27
28
29
30
31
32
33
34
<p align="center">
<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/davdroman"><img src="https://github.com/davdroman.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><a href="https://github.com/jakewarren"><img src="https://github.com/jakewarren.png" width="60px" alt="" /></a><a href="https://github.com/huettern"><img src="https://github.com/huettern.png" width="60px" alt="" /></a><a href="https://github.com/tgpholly"><img src="https://github.com/tgpholly.png" width="60px" alt="" /></a><a href="https://github.com/Fuzznimp"><img src="https://github.com/Fuzznimp.png" width="60px" alt="" /></a><a href="https://github.com/crab-apple"><img src="https://github.com/crab-apple.png" width="60px" alt="" /></a><a href="https://github.com/Tommylans"><img src="https://github.com/Tommylans.png" width="60px" alt="" /></a><a href="https://github.com/jacktrusler"><img src="https://github.com/jacktrusler.png" width="60px" alt="" /></a><a href="https://github.com/socketbox"><img src="https://github.com/socketbox.png" width="60px" alt="" /></a><a href="https://github.com/lubosm"><img src="https://github.com/lubosm.png" width="60px" alt="" /></a><a href="https://github.com/xdice86"><img src="https://github.com/xdice86.png" width="60px" alt="" /></a><a href="https://github.com/pablosproject"><img src="https://github.com/pablosproject.png" width="60px" alt="" /></a><!-- sponsors -->
</p>

## Elevator Pitch

Rant time: You've heard it before, git is _powerful_, but what good is that power when everything is so damn hard to do? Interactive rebasing requires you to edit a goddamn TODO file in your editor? _Are you kidding me?_ To stage part of a file you need to use a command line program to step through each hunk and if a hunk can't be split down any further but contains code you don't want to stage, you have to edit an arcane patch file _by hand_? _Are you KIDDING me?!_ Sometimes you get asked to stash your changes when switching branches only to realise that after you switch and unstash that there weren't even any conflicts and it would have been fine to just checkout the branch directly? _YOU HAVE GOT TO BE KIDDING ME!_

If you're a mere mortal like me and you're tired of hearing how powerful git is when in your daily life it's a powerful pain in your ass, lazygit might be for you.

## Table of contents
大地缸's avatar
init  
大地缸 committed
35
36

- [Installation](#installation)
大地缸's avatar
lazy  
大地缸 committed
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  - [Binary releases](#binary-releases)
  - [Homebrew](#homebrew)
  - [MacPorts](#macports)
  - [Void Linux](#void-linux)
  - [Scoop (Windows)](#scoop-windows)
  - [Arch Linux](#arch-linux)
  - [Fedora and RHEL](#fedora-and-rhel)
  - [Solus Linux](#solus-linux)
  - [Ubuntu](#ubuntu)
  - [Funtoo Linux](#funtoo-linux)
  - [FreeBSD](#freebsd)
  - [Conda](#conda)
  - [Go](#go)
  - [Chocolatey (Windows)](#chocolatey-windows)
  - [Manual](#manual)
大地缸's avatar
init  
大地缸 committed
52
- [Usage](#usage)
大地缸's avatar
lazy  
大地缸 committed
53
54
55
56
57
58
59
60
  - [Keybindings](#keybindings)
  - [Changing directory on exit](#changing-directory-on-exit)
  - [Undo/Redo](#undoredo)
- [Configuration](#configuration)
  - [Custom pagers](#configuration)
  - [Custom commands](#configuration)
- [Tutorials](#tutorials)
- [Cool Features](#cool-features)
大地缸's avatar
init  
大地缸 committed
61
- [Contributing](#contributing)
大地缸's avatar
lazy  
大地缸 committed
62
63
- [Donate](#donate)
- [Alternatives](#alternatives)
大地缸's avatar
init  
大地缸 committed
64

大地缸's avatar
lazy  
大地缸 committed
65
Github Sponsors is matching all donations dollar-for-dollar for 12 months so if you're feeling generous consider [sponsoring me](https://github.com/sponsors/jesseduffield)
大地缸's avatar
init  
大地缸 committed
66

大地缸's avatar
lazy  
大地缸 committed
67
[<img src="https://i.imgur.com/sVEktDn.png">](https://youtu.be/CPLdltN7wgE)
大地缸's avatar
init  
大地缸 committed
68

大地缸's avatar
lazy  
大地缸 committed
69
## Installation
大地缸's avatar
init  
大地缸 committed
70

大地缸's avatar
lazy  
大地缸 committed
71
### Binary Releases
大地缸's avatar
init  
大地缸 committed
72

大地缸's avatar
lazy  
大地缸 committed
73
For Windows, Mac OS(10.12+) or Linux, you can download a binary release [here](../../releases).
大地缸's avatar
init  
大地缸 committed
74

大地缸's avatar
lazy  
大地缸 committed
75
### Homebrew
大地缸's avatar
init  
大地缸 committed
76

大地缸's avatar
lazy  
大地缸 committed
77
Normally the lazygit formula can be found in the Homebrew core but we suggest you tap our formula to get the frequently updated one. It works with Linux, too.
大地缸's avatar
init  
大地缸 committed
78

大地缸's avatar
lazy  
大地缸 committed
79
Tap:
大地缸's avatar
init  
大地缸 committed
80

大地缸's avatar
lazy  
大地缸 committed
81
82
83
```
brew install jesseduffield/lazygit/lazygit
```
大地缸's avatar
init  
大地缸 committed
84

大地缸's avatar
lazy  
大地缸 committed
85
Core:
大地缸's avatar
init  
大地缸 committed
86

大地缸's avatar
lazy  
大地缸 committed
87
88
```
brew install lazygit
大地缸's avatar
init  
大地缸 committed
89
90
```

大地缸's avatar
lazy  
大地缸 committed
91
### MacPorts
大地缸's avatar
init  
大地缸 committed
92

大地缸's avatar
lazy  
大地缸 committed
93
94
Latest version built from github releases.
Tap:
大地缸's avatar
init  
大地缸 committed
95
96

```
大地缸's avatar
lazy  
大地缸 committed
97
sudo port install lazygit
大地缸's avatar
init  
大地缸 committed
98
99
```

大地缸's avatar
lazy  
大地缸 committed
100
101
102
### Void Linux

Packages for Void Linux are available in the distro repo
大地缸's avatar
init  
大地缸 committed
103

大地缸's avatar
lazy  
大地缸 committed
104
105
106
107
They follow upstream latest releases

```sh
sudo xbps-install -S lazygit
大地缸's avatar
init  
大地缸 committed
108
```
大地缸's avatar
lazy  
大地缸 committed
109
110
111
112
113
114
115
116
117
118
119

### Scoop (Windows)

You can install `lazygit` using [scoop](https://scoop.sh/). It's in the `extras` bucket:

```sh
# Add the extras bucket
scoop bucket add extras

# Install lazygit
scoop install lazygit
大地缸's avatar
init  
大地缸 committed
120
121
```

大地缸's avatar
lazy  
大地缸 committed
122
123
124
125
126
127
### Arch Linux

Packages for Arch Linux are available via pacman and AUR (Arch User Repository).

There are two packages. The stable one which is built with the latest release
and the git version which builds from the most recent commit.
大地缸's avatar
init  
大地缸 committed
128

大地缸's avatar
lazy  
大地缸 committed
129
130
- Stable: `sudo pacman -S lazygit`
- Development: <https://aur.archlinux.org/packages/lazygit-git/>
大地缸's avatar
init  
大地缸 committed
131

大地缸's avatar
lazy  
大地缸 committed
132
133
Instruction of how to install AUR content can be found here:
<https://wiki.archlinux.org/index.php/Arch_User_Repository>
大地缸's avatar
init  
大地缸 committed
134

大地缸's avatar
lazy  
大地缸 committed
135
### Fedora and RHEL
大地缸's avatar
init  
大地缸 committed
136

大地缸's avatar
lazy  
大地缸 committed
137
138
139
140
141
Packages for Fedora/RHEL and CentOS Stream are available via [Copr](https://copr.fedorainfracloud.org/coprs/atim/lazygit/) (Cool Other Package Repo).

```sh
sudo dnf copr enable atim/lazygit -y
sudo dnf install lazygit
大地缸's avatar
init  
大地缸 committed
142
```
大地缸's avatar
lazy  
大地缸 committed
143
144
145
146
147

### Solus Linux

```sh
sudo eopkg install lazygit
大地缸's avatar
init  
大地缸 committed
148
149
```

大地缸's avatar
lazy  
大地缸 committed
150
### Ubuntu
大地缸's avatar
init  
大地缸 committed
151

大地缸's avatar
lazy  
大地缸 committed
152
153
154
```sh
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep '"tag_name":' |  sed -E 's/.*"v*([^"]+)".*/\1/')
```
大地缸's avatar
init  
大地缸 committed
155

大地缸's avatar
lazy  
大地缸 committed
156
157
```sh
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
大地缸's avatar
init  
大地缸 committed
158
```
大地缸's avatar
lazy  
大地缸 committed
159
160
161

```sh
sudo tar xf lazygit.tar.gz -C /usr/local/bin lazygit
大地缸's avatar
init  
大地缸 committed
162
163
```

大地缸's avatar
lazy  
大地缸 committed
164
Verify the correct installation of lazygit:
大地缸's avatar
init  
大地缸 committed
165

大地缸's avatar
lazy  
大地缸 committed
166
167
168
```sh
lazygit --version
```
大地缸's avatar
init  
大地缸 committed
169

大地缸's avatar
lazy  
大地缸 committed
170
### Funtoo Linux
大地缸's avatar
init  
大地缸 committed
171

大地缸's avatar
lazy  
大地缸 committed
172
Funtoo Linux has an autogenerated lazygit package in [dev-kit](https://github.com/funtoo/dev-kit/tree/1.4-release/dev-vcs/lazygit):
大地缸's avatar
init  
大地缸 committed
173

大地缸's avatar
lazy  
大地缸 committed
174
175
176
```sh
sudo emerge dev-vcs/lazygit
```
大地缸's avatar
init  
大地缸 committed
177

大地缸's avatar
lazy  
大地缸 committed
178
### FreeBSD
大地缸's avatar
init  
大地缸 committed
179

大地缸's avatar
lazy  
大地缸 committed
180
181
182
```sh
pkg install lazygit
```
大地缸's avatar
init  
大地缸 committed
183

大地缸's avatar
lazy  
大地缸 committed
184
### Conda
大地缸's avatar
init  
大地缸 committed
185

大地缸's avatar
lazy  
大地缸 committed
186
Released versions are available for different platforms, see <https://anaconda.org/conda-forge/lazygit>
大地缸's avatar
init  
大地缸 committed
187

大地缸's avatar
lazy  
大地缸 committed
188
189
```sh
conda install -c conda-forge lazygit
大地缸's avatar
init  
大地缸 committed
190
```
大地缸's avatar
lazy  
大地缸 committed
191
192
193
194
195

### Go

```sh
go install github.com/jesseduffield/lazygit@latest
大地缸's avatar
init  
大地缸 committed
196
197
```

大地缸's avatar
lazy  
大地缸 committed
198
199
200
201
202
203
204
Please note:
If you get an error claiming that lazygit cannot be found or is not defined, you
may need to add `~/go/bin` to your $PATH (MacOS/Linux), or `%HOME%\go\bin`
(Windows). Not to be mistaken for `C:\Go\bin` (which is for Go's own binaries,
not apps like lazygit).

### Chocolatey (Windows)
大地缸's avatar
init  
大地缸 committed
205

大地缸's avatar
lazy  
大地缸 committed
206
You can install `lazygit` using [Chocolatey](https://chocolatey.org/):
大地缸's avatar
init  
大地缸 committed
207

大地缸's avatar
lazy  
大地缸 committed
208
209
210
```sh
choco install lazygit
```
大地缸's avatar
init  
大地缸 committed
211

大地缸's avatar
lazy  
大地缸 committed
212
### Manual
大地缸's avatar
init  
大地缸 committed
213

大地缸's avatar
lazy  
大地缸 committed
214
You'll need to [install Go](https://golang.org/doc/install)
大地缸's avatar
init  
大地缸 committed
215
216

```
大地缸's avatar
lazy  
大地缸 committed
217
218
219
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install
大地缸's avatar
init  
大地缸 committed
220
221
```

大地缸's avatar
lazy  
大地缸 committed
222
You can also use `go run main.go` to compile and run in one go (pun definitely intended)
大地缸's avatar
init  
大地缸 committed
223

大地缸's avatar
lazy  
大地缸 committed
224
## Usage
大地缸's avatar
init  
大地缸 committed
225

大地缸's avatar
lazy  
大地缸 committed
226
Call `lazygit` in your terminal inside a git repository.
大地缸's avatar
init  
大地缸 committed
227

大地缸's avatar
lazy  
大地缸 committed
228
229
230
```sh
$ lazygit
```
大地缸's avatar
init  
大地缸 committed
231

大地缸's avatar
lazy  
大地缸 committed
232
233
234
If you want, you can
also add an alias for this with `echo "alias lg='lazygit'" >> ~/.zshrc` (or
whichever rc file you're using).
大地缸's avatar
init  
大地缸 committed
235

大地缸's avatar
lazy  
大地缸 committed
236
### Keybindings
大地缸's avatar
init  
大地缸 committed
237

大地缸's avatar
lazy  
大地缸 committed
238
You can check out the list of keybindings [here](/docs/keybindings).
大地缸's avatar
init  
大地缸 committed
239

大地缸's avatar
lazy  
大地缸 committed
240
### Changing Directory On Exit
大地缸's avatar
init  
大地缸 committed
241

大地缸's avatar
lazy  
大地缸 committed
242
If you change repos in lazygit and want your shell to change directory into that repo on exiting lazygit, add this to your `~/.zshrc` (or other rc file):
大地缸's avatar
init  
大地缸 committed
243
244

```
大地缸's avatar
lazy  
大地缸 committed
245
246
247
248
249
250
251
252
253
254
255
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
}
大地缸's avatar
init  
大地缸 committed
256
257
```

大地缸's avatar
lazy  
大地缸 committed
258
Then `source ~/.zshrc` and from now on when you call `lg` and exit you'll switch directories to whatever you were in inside lazygit. To override this behaviour you can exit using `shift+Q` rather than just `q`.
大地缸's avatar
init  
大地缸 committed
259

大地缸's avatar
lazy  
大地缸 committed
260
### Undo/Redo
大地缸's avatar
init  
大地缸 committed
261

大地缸's avatar
lazy  
大地缸 committed
262
See the [docs](/docs/Undoing.md)
大地缸's avatar
init  
大地缸 committed
263

大地缸's avatar
lazy  
大地缸 committed
264
## Configuration
大地缸's avatar
init  
大地缸 committed
265

大地缸's avatar
lazy  
大地缸 committed
266
Check out the [configuration docs](docs/Config.md).
大地缸's avatar
init  
大地缸 committed
267

大地缸's avatar
lazy  
大地缸 committed
268
### Custom Pagers
大地缸's avatar
init  
大地缸 committed
269

大地缸's avatar
lazy  
大地缸 committed
270
See the [docs](docs/Custom_Pagers.md)
大地缸's avatar
init  
大地缸 committed
271

大地缸's avatar
lazy  
大地缸 committed
272
### Custom Commands
大地缸's avatar
init  
大地缸 committed
273

大地缸's avatar
lazy  
大地缸 committed
274
If lazygit is missing a feature, there's a good chance you can implement it yourself with a custom command!
大地缸's avatar
init  
大地缸 committed
275

大地缸's avatar
lazy  
大地缸 committed
276
See the [docs](docs/Custom_Command_Keybindings.md)
大地缸's avatar
init  
大地缸 committed
277

大地缸's avatar
lazy  
大地缸 committed
278
## Tutorials
大地缸's avatar
init  
大地缸 committed
279

大地缸's avatar
lazy  
大地缸 committed
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
- [Video Tutorial](https://youtu.be/VDXvbHZYeKY)
- [Rebase Magic Video Tutorial](https://youtu.be/4XaToVut_hs)
- [Twitch Stream](https://www.twitch.tv/jesseduffield)

## Cool features

- Adding files easily
- Resolving merge conflicts
- Easily check out recent branches
- Scroll through logs/diffs of branches/commits/stash
- Quick pushing/pulling
- Squash down and reword commits

### Resolving merge conflicts

![Gif](../assets/resolving-merge-conflicts.gif)

### Interactive Rebasing

![Interactive Rebasing](../assets/rebase.gif)
大地缸's avatar
init  
大地缸 committed
300
301
302

## Contributing

大地缸's avatar
lazy  
大地缸 committed
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
We love your input! Please check out the [contributing guide](CONTRIBUTING.md).
For contributor discussion about things not better discussed here in the repo, join the discord channel

<a href="https://discord.gg/ehwFt2t4wt"><img src='../assets/discord.png' width='75'></a>

Check out this [video](https://www.youtube.com/watch?v=kNavnhzZHtk) walking through the creation of a small feature in lazygit if you want an idea of where to get started.

### Debugging Locally

Run `lazygit --debug` in one terminal tab and `lazygit --logs` in another to view the program and its log output side by side

## Donate

If you would like to support the development of lazygit, consider [sponsoring me](https://github.com/sponsors/jesseduffield) (github is matching all donations dollar-for-dollar for 12 months)

## FAQ

### What do the commit colors represent?

- Green: the commit is included in the master branch
- Yellow: the commit is not included in the master branch
- Red: the commit has not been pushed to the upstream branch

## Shameless Plug

If you want to see what I (Jesse) am up to in terms of development, follow me on
[twitter](https://twitter.com/DuffieldJesse) or check out my [blog](https://jesseduffield.com/)
大地缸's avatar
init  
大地缸 committed
330

大地缸's avatar
lazy  
大地缸 committed
331
## Alternatives
大地缸's avatar
init  
大地缸 committed
332

大地缸's avatar
lazy  
大地缸 committed
333
If you find that lazygit doesn't quite satisfy your requirements, these may be a better fit:
大地缸's avatar
init  
大地缸 committed
334

大地缸's avatar
lazy  
大地缸 committed
335
336
- [GitUI](https://github.com/Extrawurst/gitui)
- [tig](https://github.com/jonas/tig)