GithubHelp home page GithubHelp logo

jesseduffield / lazygit Goto Github PK

View Code? Open in Web Editor NEW
45.4K 275.0 1.7K 141.3 MB

simple terminal UI for git commands

License: MIT License

Go 99.74% Shell 0.17% Dockerfile 0.04% Makefile 0.05%
cli git terminal

lazygit's Introduction

A simple terminal UI for git commands

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

commit_and_push

Sponsors

Maintenance of this project is made possible by all the contributors and sponsors. If you'd like to sponsor this project and have your avatar or company logo appear below click here. πŸ’™

Mark LussierDean HerbertPeter BjorklundReilly WoodOliver GΓΌntherPawan DhananjayBartΕ‚omiej DachDavid KarlssonCarsten GehlingCEUKAkos PutzXeteraHolden LucasChau TranmatejciktheAverageDev (Luca Tumedei)Zach FullerIvan ZaitsevNicholas CloudLightQuantumGabriel SaillardAliaksandr StelmachonakBurgy BenjaminJoe KlemmerLinus MetzlerTobias LΓΌtkeBen BeaumontHollyJames SantucciJeff Forcierkohane27Maciej T. NowakMichael HuggettFarzad MajidfayyazYuryAndreas KurthBraden SteffaniakJordan GillardSebastianGeorge SpanosBen HuntAlex BradnerFrantisek StankoAndy SlezakMartin KockIllarion KoperskiJesse AlamaCodacyBrettJan HeijmansKevin Nowaldsem pruijsOmar Luq Ethan LiBrian MacAskillMaxinbrJan ZenknerVictor AremuBohdan ShulhaCrisNick RadfordIgor RamazanovMichaelRomanYukiya NakagawaHikaru WadaSakari EkqvistElliott Maguiren8n - Workflow Automationkaleb allmonJosh ThomasTrolli SchmittlauchJJFrederick MorlockDarren CraineLuboΕ‘ Matejčík

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

Lazygit is not my fulltime job but it is a hefty part time job so if you want to support the project please consider sponsoring me

Features

Stage individual lines

Press space on the selected line to stage it, or press v to start selecting a range of lines. You can also press a to select the entirety of the current hunk.

stage_lines

Interactive Rebase

Press i to start an interactive rebase. Then squash (s), fixup (f), drop (d), edit (e), move up (ctrl+i) or move down (ctrl+j) any of TODO commits, before continuing the rebase by bringing up the rebase options menu with m and then selecting continue.

You can also perform any these actions as a once-off (e.g. pressing s on a commit to squash it) without explicitly starting a rebase.

This demo also uses shift+down to select a range of commits to move and fixup.

interactive_rebase

Cherry-pick

Press shift+c on a commit to copy it and press shift+v to paste (cherry-pick) it.

cherry_pick

Bisect

Press b in the commits view to mark a commit as good/bad in order to begin a git bisect.

bisect

Nuke the working tree

For when you really want to just get rid of anything that shows up when you run git status (and yes that includes dirty submodules) kidpix style, press shift+d to bring up the reset options menu and then select the 'nuke' option.

Nuke working tree

Amend an old commit

Pressing shift+a on any commit will amend that commit with the currently staged changes (running an interactive rebase in the background).

amend_old_commit

Filter

You can filter a view with /. Here we filter down our branches view and then hit enter to view its commits.

filter

Invoke a custom command

Lazygit has a very flexible custom command system. In this example a custom command is defined which emulates the built-in branch checkout action.

custom_command

Worktrees

You can create worktrees to have multiple branches going at once without the need for stashing or creating WIP commits when switching between them. Press w in the branches view to create a worktree from the selected branch and switch to it.

worktree_create_from_branches

Rebase magic (custom patches)

You can build a custom patch from an old commit and then remove the patch from the commit, split out a new commit, apply the patch in reverse to the index, and more.

In this example we have a redundant comment that we want to remove from an old commit. We hit <enter> on the commit to view its files, then <enter> on a file to focus the patch, then <space> to add the comment line to our custom patch, and then ctrl+p to view the custom patch options; selecting to remove the patch from the current commit.

Learn more in the Rebase magic Youtube tutorial.

custom_patch

Rebase from marked base commit

Say you're on a feature branch that was itself branched off of the develop branch, and you've decided you'd rather be branching off the master branch. You need a way to rebase only the commits from your feature branch. In this demo we check to see which was the last commit on the develop branch, then press shift+b to mark that commit as our base commit, then press r on the master branch to rebase onto it, only bringing across the commits from our feature branch. Then we push our changes with shift+p.

rebase_onto

Undo

You can undo the last action by pressing 'z' and redo with ctrl+z. Here we drop a couple of commits and then undo the actions. Undo uses the reflog which is specific to commits and branches so we can't undo changes to the working tree or stash.

More info

undo

Commit graph

When viewing the commit graph in an enlarged window (use + and _ to cycle window sizes), the commit graph is shown. Colours correspond to the commit authors, and as you navigate down the graph, the parent commits of the selected commit are highlighted.

commit_graph

Compare two commits

If you press shift+w on a commit (or branch/ref) a menu will open that allows you to mark that commit so that any other commit you select will be diffed against it. Once you've selected the second commit, you'll see the diff in the main view and if you press <enter> you'll see the files of the diff. You can press shift+w to view the diff menu again to see options like reversing the diff direction or exiting diff mode. You can also exit diff mode by pressing <escape>.

diff_commits

Tutorials

Installation

Packaging status

Most of the above packages are maintained by third parties so be sure to vet them yourself and confirm that the maintainer is a trustworthy looking person who attends local sports games and gives back to their communities with barbeque fundraisers etc

Binary Releases

For Windows, Mac OS(10.12+) or Linux, you can download a binary release here.

Homebrew

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.

Tap:

brew install jesseduffield/lazygit/lazygit

Core:

brew install lazygit

MacPorts

Latest version built from github releases. Tap:

sudo port install lazygit

Void Linux

Packages for Void Linux are available in the distro repo

They follow upstream latest releases

sudo xbps-install -S lazygit

Scoop (Windows)

You can install lazygit using scoop. It's in the extras bucket:

# Add the extras bucket
scoop bucket add extras

# Install lazygit
scoop install lazygit

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.

Instruction of how to install AUR content can be found here: https://wiki.archlinux.org/index.php/Arch_User_Repository

Fedora and RHEL

Packages for Fedora/RHEL and CentOS Stream are available via 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

Verify the correct installation of lazygit:

lazygit --version

Funtoo Linux

Funtoo Linux has an autogenerated lazygit package in dev-kit:

sudo emerge dev-vcs/lazygit

Gentoo Linux

Lazygit is not (yet) in main Gentoo portage, however an ebuild is available in GURU overlay

You can either add the overlay to your system and install lazygit as usual:

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

openSUSE

The lazygit package is currently built in devel:languages:go/lazygit.

To install lazygit on openSUSE Tumbleweed run:

sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit

To install lazygit on openSUSE Leap run:

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

On NixOs lazygit is packaged with nix and distributed via nixpkgs. You can try the lazygit without installing it with:

nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit

Or you can add lazygit to you configuration.nix in the environment.systemPackages section. More details can be found via NixOs search page.

FreeBSD

pkg install lazygit

Termux

apt install lazygit

Conda

Released versions are available for different platforms, see https://anaconda.org/conda-forge/lazygit

conda install -c conda-forge lazygit

Go

go install github.com/jesseduffield/lazygit@latest

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)

You can install lazygit using Chocolatey:

choco install lazygit

Winget (Windows 10 1709 or later)

You can install lazygit using the winget command in the Windows Terminal with the following command:

winget install -e --id=JesseDuffield.lazygit

Manual

You'll need to install Go

git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install

You can also use go run main.go to compile and run in one go (pun definitely intended)

Usage

Call lazygit in your terminal inside a git repository.

$ lazygit

If you want, you can also add an alias for this with echo "alias lg='lazygit'" >> ~/.zshrc (or whichever rc file you're using).

Keybindings

You can check out the list of keybindings here.

Changing Directory On Exit

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):

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
}

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.

Undo/Redo

See the docs

Configuration

Check out the configuration docs.

Custom Pagers

See the docs

Custom Commands

If lazygit is missing a feature, there's a good chance you can implement it yourself with a custom command!

See the docs

Git flow support

Lazygit supports Gitflow if you have it installed. To understand how the Gitflow model works check out Vincent Driessen's original post explaining it. To view Gitflow options from within Lazygit, press i from within the branches view.

Contributing

We love your input! Please check out the contributing guide. For contributor discussion about things not better discussed here in the repo, join the discord channel

Check out this video 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 (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 or check out my blog

Alternatives

If you find that lazygit doesn't quite satisfy your requirements, these may be a better fit:

lazygit's People

Contributors

ajhynes7 avatar antham avatar arnaudperalta avatar azraelsec avatar black-desk avatar dawidd6 avatar derteta avatar eruizc-dev avatar fluffynuts avatar foamscience avatar fsmiamoto avatar glvr182 avatar jesseduffield avatar krismix1 avatar kristijanhusak avatar mark2185 avatar mjarkk avatar moha-gh avatar no-realm avatar nullishamy avatar phanithinks avatar pikomonde avatar ponsfrilus avatar remyabel2 avatar renerick avatar ryooooooga avatar samburville avatar skanehira avatar stefanhaller avatar wwmoraes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lazygit's Issues

Doing this might clobber your rc file!

Hellooo,

Looks like a cool and useful project πŸ‘ πŸ˜„

In the readme, you have this:

If you want, you can also add an alias for this with echo "alias lg='lazygit' > ~/.zshrc (or whichever rc file you're using)

This seems to be missing the closing quote for the string and it_ will clobber the file 😱

Should it be echo "alias lg='lazygit'" >> ~/.zshrc?

Installation via Homebrew

Is there any chance lazygit will be available via Homebrew?

I tried installing via go get but I had to resolve some symlinks manually.

Not available in path

I needed ~/go/bin added to my $PATH in order to use lazygit.

Since I know absolutely nothing about Golang, it took me quite some time to figure out where the heck Go stuffs its binaries installed via go get. Maybe you could make a brief note about this in the README?

Avoid reading whole files into memory

Had a large un-staged file in the repo and while scrolling the file-list in lazygit it seemed like everything gets loaded into memory, even though the preview only shows a couple dozen of lines.

Could you maybe use use a different approach instead of reading everything?

Contrast Issues (panel borders)

I pushed a commit to increase the contrast of the highlighted panel vs the other panels as a few people suggested, and although it's looking good on all my iterm themes, I don't have full visibility over what it looks like for everybody. So if your contrast is out of whack, please let me know here :)

What mine currently looks like:
image

Bash? On Windows?

I get the following error when running on Windows.

image

And after a sec this message also popped up.

image

(Pretty sure that second message is just to add the fingerprint to the list of known hosts, but how do I answer the prompt?)

Panic: no changed file. Crash when executing "sublime"

When i open lazygit and press on 's' (to open sublime) in crashes with this error:

panic: No changed files


goroutine 1 [running]:
log.Panicln(0xc42005df08, 0x1, 0x1)
	/home/ron/go1.9.2/src/log/log.go:340 +0xc0
main.run()
	/home/ron/go/src/github.com/jesseduffield/lazygit/gui.go:325 +0x1de
main.main()
	/home/ron/go/src/github.com/jesseduffield/lazygit/main.go:68 +0xfc

Installation not working on macOS

Hi,

Trying to get this installed on macOS but still have nothing working. my go environment works as expected but when running go get github.com/jesseduffield/lazygit, the command runs and produces nothing in the terminal session. Any suggestions?

Thanks

Releases / Binary Distribution

Is there a way to distribute binaries in this project by using the releases/tags for it?

It would heavily improve the installation for people not familiar with go and people that don't have a working go setup and just want to build a simple package for a binary.

Stage lines

I have been waiting for something like this for a long time, the only feature I'm missing is the ability to select lines and only stage them without staging the whole file.

Can't scroll the bottom "hints"

screen shot 2018-08-05 at 7 38 13 pm

This bottom "hints" section runs off of my screen (even in fullscreen mode) however It doesn't look like I can scroll right to see the rest of the hints

Can't commit with multiple words commit message

As in the title.
If the commit message is only one word long, it commits without any problems.
And i can commit with multiple words message from the Command Prompt (using 'git commit -m ) also without any problems.

2018-08-07 18_54_37-windows powershell

2018-08-07 18_54_52-windows powershell

Any ideas?

Ubuntu throws error

2018/08/07 10:15:06 invalid argument
panic: invalid argument

goroutine 1 [running]:
log.Panicln(0xc420065f00, 0x1, 0x1)
/usr/lib/go-1.10/src/log/log.go:340 +0xc0
main.run()
/build/lazygit-3g32Dt/lazygit-0.0git20180807.66.4d425de/obj-x86_64-linux-gnu/src/github.com/jesseduffield/lazygit/gui.go:267 +0x8a
main.main()
/build/lazygit-3g32Dt/lazygit-0.0
git20180807.66.4d425de/obj-x86_64-linux-gnu/src/github.com/jesseduffield/lazygit/main.go:68 +0xf2

Feature request: easy way to merge remote branch

Congrats on lazygit, its great.

One of the slowest workflows with git is that to merge develop/master etc into your current branch you have to stash/commit current, checkout master, pull, switch back to current, then merge. This is awfully slow in SourceTree.

There are two quicker ways on the command line, discussed in the stackoverflow answers here:

https://stackoverflow.com/a/34344502/2102158
git pull origin master - this effectively merges the origin version of develop into your branch in one command

https://stackoverflow.com/a/45697574/2102158

git fetch origin master:master
git merge master

Which updates the local master to the remote without a checkout, then merges it

In lazygit, I reckon the best would be to have a one key command to update a non checkout branch to latest - eg run git fetch origin master:master on it

Thanks for consideration.

Shell Config Nuke

In the installation part of the README.md, the use of the redirect operator > will cause the entire files contents to be overwritten. It should be changed to the append operator >>. If someone were to copy and paste it without version controlled dot files, it could lead to a very sad programmer.

echo "alias lg='lazygit' > ~/.zshrc
to
echo "alias lg='lazygit'" >> ~/.zshrc

Make active tab more prominent

Currently it's not really clear which tab is active just by looking at them (when there's not much information in them). The active tab is bolded, but the difference could be very subtle on some terminal setups (like mine). The active tab should be more distinguishable, maybe even use a different color for the outline.

How to get binaries built on travis CI

I'm not sure why my builds aren't making binaries. Could anybody give me some pointers?
output:

0.79s$ git clone --depth=50 --branch=v0.1.4 https://github.com/jesseduffield/lazygit.git jesseduffield/lazygit
Cloning into 'jesseduffield/lazygit'...
remote: Counting objects: 773, done.
remote: Compressing objects: 100% (410/410), done.
remote: Total 773 (delta 372), reused 736 (delta 341), pack-reused 0
Receiving objects: 100% (773/773), 960.14 KiB | 3.83 MiB/s, done.
Resolving deltas: 100% (372/372), done.
Note: checking out '1730089b09b623d55227ddcc8ce02ad57d7f2cf0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
  git checkout -b <new-branch-name>
$ cd jesseduffield/lazygit
$ git checkout -qf v0.1.4
Setting environment variables from .travis.yml
$ export LATEST=true
9.90s$ GIMME_OUTPUT="$(gimme 1.x | tee -a $HOME/.bashrc)" && eval "$GIMME_OUTPUT"
go version go1.11beta3 linux/amd64
$ export GOPATH=$HOME/gopath
$ export PATH=$HOME/gopath/bin:$PATH
$ mkdir -p $HOME/gopath/src/github.com/jesseduffield/lazygit
$ rsync -az ${TRAVIS_BUILD_DIR}/ $HOME/gopath/src/github.com/jesseduffield/lazygit/
$ export TRAVIS_BUILD_DIR=$HOME/gopath/src/github.com/jesseduffield/lazygit
$ cd $HOME/gopath/src/github.com/jesseduffield/lazygit
0.01s
$ gimme version
v1.5.0
$ go version
go version go1.11beta3 linux/amd64
go.env
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/travis/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/travis/gopath"
GOPROXY=""
GORACE=""
GOROOT="/home/travis/.gimme/versions/go1.11beta3.linux.amd64"
GOTMPDIR=""
GOTOOLDIR="/home/travis/.gimme/versions/go1.11beta3.linux.amd64/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build399365960=/tmp/go-build -gno-record-gcc-switches"
before_install.1
0.94s$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
ARCH = amd64
OS = linux
Will install into /home/travis/gopath/bin
Fetching https://github.com/golang/dep/releases/latest..
Release Tag = v0.5.0
Fetching https://github.com/golang/dep/releases/tag/v0.5.0..
Fetching https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64..
Setting executable permissions.
Moving executable to /home/travis/gopath/bin/dep
before_install.2
0.01s$ chmod +x $GOPATH/bin/dep
before_install.3
0.01s$ ls $GOPATH/bin/
dep
$ dep ensure
install
0.00s$ 
16.05s$ if [ "${LATEST}" = "true" ]; then gox -os="linux darwin windows" -arch="amd64" -output="lazygit.." -ldflags "-X main.Rev=`git rev-parse --short HEAD`" -verbose ./...; fi
Number of parallel builds: 1
-->   windows/amd64: github.com/jesseduffield/lazygit
-->     linux/amd64: github.com/jesseduffield/lazygit
-->    darwin/amd64: github.com/jesseduffield/lazygit
The command "if [ "${LATEST}" = "true" ]; then gox -os="linux darwin windows" -arch="amd64" -output="lazygit.." -ldflags "-X main.Rev=`git rev-parse --short HEAD`" -verbose ./...; fi" exited with 0.
dpl_0
1.85s$ rvm $(travis_internal_ruby) --fuzzy do ruby -S gem install dpl
Fetching: dpl-1.9.8.gem (100%)
Successfully installed dpl-1.9.8
1 gem installed
3.64s
dpl.1
Installing deploy dependencies
Fetching: multipart-post-2.0.0.gem (100%)
Successfully installed multipart-post-2.0.0
Fetching: faraday-0.15.2.gem (100%)
Successfully installed faraday-0.15.2
Fetching: public_suffix-3.0.2.gem (100%)
Successfully installed public_suffix-3.0.2
Fetching: addressable-2.5.2.gem (100%)
Successfully installed addressable-2.5.2
Fetching: sawyer-0.8.1.gem (100%)
Successfully installed sawyer-0.8.1
Fetching: octokit-4.6.2.gem (100%)
Successfully installed octokit-4.6.2
Fetching: mime-types-2.99.3.gem (100%)
Successfully installed mime-types-2.99.3
Fetching: dpl-releases-1.9.8.gem (100%)
Successfully installed dpl-releases-1.9.8
8 gems installed
dpl.2
Preparing deploy
Logged in as Jesse Duffield
Deploying to repo: jesseduffield/lazygit
Current tag is: v0.1.4
dpl.3
Deploying application
Done. Your build exited with 0.

Keybindings for editors

I've noticed there's keybindings set for specific editors such as "s" for "sublime" and "v" for "vscode". If I may suggest, instead of making a new keybinding for every editor, maybe it might be better to make one keybinding for opening whatever editor is specified with the $EDITOR, $GIT_EDITOR, or $VISUAL environment variable. This is what git does to determine which editor to use.

Windows

Installed go for windows. Ran go get. Go bin is in path. Ran lazy git in git repo, command not found.

Consider collapsing adjacent panel borders

I’ll just draw these, remark that if you collapsed adjacent panel borders you’d save roughly four rows and one column and generally make it more pleasant to look at, and leave it at that; decide what you will with it.

β”Œβ”€Titleβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”Œβ”€Title────────────────┐
β”‚Contents              β”‚β”‚Contents              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚                      β”‚
β”Œβ”€Title────────────────┐│                      β”‚
β”‚Contents              β”‚β”‚                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
┏━Title━━━━━━━━━━━━━━━━┱─Title────────────────┐
┃Contents              ┃Contents              β”‚
┑━Title━━━━━━━━━━━━━━━━┩                      β”‚
β”‚Contents              β”‚                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

(OK, one more remarkβ€”note I used heavy box drawing characters to highlight the active pane rather than using bright white instead of dim white; that will probably be necessary.)

Multiline commit messages

There should be a way to write multi-line commit messages. For example, you could use Enter for newlines and Shift+Enter to commit.

Windows: The term 'lazygit' is not recognized as the name of a cmdlet, function, script file, or operable program.

I just pulled latest version but can't run it

PS C:\Users\vovik> go get github.com/jesseduffield/lazygit
PS C:\Users\vovik> lazygit
lazygit : The term 'lazygit' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ lazygit
+ ~~~~~~~
    + CategoryInfo          : ObjectNotFound: (lazygit:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Fails with exit status 1

I'm running on Windows 10. I don't see any sort of log file, so I can't provide much more detail.

Imgur

Thanks!

shortcuts for up and down arrows

It would be great if one could use the classic emacs/terminal shortcuts of C-n and C-p as substitutes for the up and down arrows. That way I could use lazygit without having to move my fingers too far from starting position. Another more general option would be either an interface or tutorial to allow users to change this to their desired keys.

Vi key bindings

hi there,

Is there a settings files so I can add vi key bindings?

Thanks

Tree view

Hi would it be possible to add a tree view to lazygit that way you can visually see branch history
git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

lazygit: command not found

Call command: go get github.com/jesseduffield/lazygit
Execute lazygit command in iTerm2
prompt: -bash: lazygit: command not found

Automatically Set Upstream

Hi,

I created a new branch using lazygit, commited some changes, and pressed "p". It started pulling the code, and then gave the following error:
image

It would be nice to have it ask what branch to set the upstream to and default to the current branch name.

Other than that, love lazygit!

apt-secure error

After running sudo apt-get update

E: The repository 'http://ppa.launchpad.net/lazygit-team/daily/ubuntu artful Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

I'm on Ubuntu 17.10 Artful. Guess it's time to upgrade :D

Homebrew formula

Hi, it would be great to have this available in homebrew main tree or as a tap.

Color scheme

I'm using the Solarized Light color scheme for my terminal - which unfortunately doesn't work well with the color map of lazygit in many sections of the GUI:
screen shot 2018-08-05 at 12 20 51

Please not the (at least for my eyes) unreadable blue status bar text, and very faint text in the Status/Branches/Commits sections.
It would be great if we could configure individual colors or select a color profile / palette!

dep support for building process

It could be better supporting dep on building process. Installing dependencies on global stash is not that preferred way for building go executables.

not installing

os: fedora28

$ go get github.com/jesseduffield/lazygit
$ lazygit
fish: lazygit: command not found...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.