DEV Community

Cover image for What GIT GUI client do you use?

What GIT GUI client do you use?

Madza on September 30, 2020

I used GitHub Desktop at first, tho moved away as I wanted some integrated solution. So I went with VS Code extension GitLens and I find version co...
Collapse
 
ecyrbe profile image
ecyrbe • Edited

I don't use a git gui, i'm far faster with command line.

It take a while to know the commands and options, but once you learn them you become much more productive.

It allows you to use git on any computer, help others fix their git mistakes.

Collapse
 
jacob87o2 profile image
Jacob B.

Having GUI doesn't disallow you from using CLI commands but does help with rendering the tree. The tree rendered in terminal looks awful and not very helpful.

Also, I find some actions to be faster and easier using GUI - for example reviewing and staging the changes.

So, I personally use both GUI (Fork) and git CLI.

I also use KDiff3 for resolving conflicts. Looks dated but works really well.

Collapse
 
thefern profile image
Fernando B πŸš€

Add that cli feedback is a whole lot better than a gui client.

Collapse
 
louislow profile image
Louis Low

Terminal only

Collapse
 
madza profile image
Madza • Edited

Do you use any aliases to be more productive with git? πŸ€”

Collapse
 
louislow profile image
Louis Low • Edited

Oh yes, I created a few most frequently used Git commands with aliases in my .bashrc file. Usually, the shorthand commands not more than 6 letters.

# @file: .bashrc
alias gprn='du -hs $PWD/.git; git status; git pull; git gc --aggressive --prune=all; du -hs $PWD/.git'
alias gprna='find . -name .git -type d -execdir git gc --prune=all ";"'
alias gs='git status'
alias gpsh='du -hs $PWD/.git; git gc --aggressive --prune=all; du -hs $PWD/.git; git status; git push'
alias gcomp='du -hs $PWD/.git; git gc --aggressive --prune=all; du -hs $PWD/.git; git add .; git commit -m'
alias gclone='git clone'
alias gc='git checkout'
alias gcm='git commit -m'
alias gs='git status'
alias ga='git add --all'
alias gp='git pull --rebase'
alias gb='git branch -vv'
alias gr='git remote -v'
alias grt='git reset --hard'
alias gpub='git push origin publish'
alias grp='git rebase publish'
alias gdev='git push origin dev'
alias gd='git branch -D'
alias gm='git merge'
alias gh='git push'
alias gda='git branch | grep -v "develop" | grep -v "release" | xargs git branch -D'
alias gf='git fetch'
alias gl='git log -3'
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
madza profile image
Madza

Nice list πŸ”₯πŸ”₯πŸ”₯ Thanks for sharing with us ❀

Thread Thread
 
simonguillochon profile image
dondappr33

Hey ! Do you know ZSH has its own aliases for Git in CLI ?
github.com/ohmyzsh/ohmyzsh/wiki/Ch...

Thread Thread
 
louislow profile image
Louis Low

Yea, I know. But I am kinda married to Bash like forever (16 years). I don't think I would find any other partner.

Thread Thread
 
simonguillochon profile image
dondappr33

Weddings are increasingly rare so congratulations lol

Thread Thread
 
louislow profile image
Louis Low

Everything is weird these days.

Collapse
 
thefern profile image
Fernando B πŸš€

These are my abbreviations in fish.

github.com/kodaman2/kubuntu-dotfil...

Collapse
 
kamo profile image
KAIDI

I use Fork , let's say it's very powerful and easy to use.
I tested gitkraken before, it's slow comparing with fork

Collapse
 
dkast profile image
Daniel Castillejo • Edited

I use Gitlens + Git Graph on VS Code.

I've also used SourceTree as a standalone git client in the past but a few months back I've switched to Fork and I'm pretty happy with it.

Collapse
 
ramyadhanush profile image
ramyaDhanush

How Git Graph works?

Collapse
 
jcsh profile image
Justin Ho

I use git in the terminal but added forgit which has syntax highlighting for diffs and log views

Collapse
 
jillejr profile image
Kalle Fagerberg • Edited

Yea forgit is a blessing. I enjoy using the terminal as-is but forgit's staging view is a huge blessing for me
forgit add

Collapse
 
jcsh profile image
Justin Ho

Damn that's a clean setup!
I never even got around to customizing my tmux tabs or the forgit colors haha

Thread Thread
 
jillejr profile image
Kalle Fagerberg

Haha not gonna lie, I just pulled the screenshot off github.com/wfxr/forgit#readme. Probably should've added a "credits to wfxr for image".

I'm actually not a user of tmux. But hey this actually gives me some energy to look into it :)

Thread Thread
 
jcsh profile image
Justin Ho

Ah I see, you should definitely check out tmux or any of its cousins.

I run a tmux session (instance) of it on my workstation and move around the house on my laptop ssh-ed and using the same tmux so I never lose what I was doing in multiple consoles.

Thread Thread
 
jillejr profile image
Kalle Fagerberg

Oh boy that sounds like a swell setup, thanks for sharing :)

Collapse
 
choroba profile image
E. Choroba

I use the command line in a terminal and magit in Emacs.

Collapse
 
pierrelegall profile image
Pierre Le Gall

If magit is the best Git GUI for many people today, we have to precise it is the best Git GUI for Emacs users only ;p

And, as an Emacs plugin (I should say Emacs package), note it is a Git pseudo-GUI because it is keyboard oriented. From my point of view, it is very nice compromise between power of a CLI and ergonomy of a GUI.

Collapse
 
frost profile image
Martin Frost

Same here. I've tried to use VS Code a bit, and in VS Code I've tried the edamagit plugin, which aims to be a magit version for VS Code. It seems promising.

Collapse
 
esquevin profile image
Guillaume Esquevin

I use git from terminal if I'm within one or gitlens if I'm on vscode.

But I've unlocked much more power from git through Gitup gitup.co which allow me to entirely rewrite a branch history and split commits in a better way, extracting exactly the lines I want in a given commit, and making my PR much easier to review for my colleagues.
I don't even wanna try to do this from command line. There are use case when a GUI is superior.

Collapse
 
chrisjust profile image
Chris Justesen

I do this in the cli,

However I agree, with large amounts of files I will select vscode which also allows for partial staging of files.

But git add -i is a blessing in my day-to-day operations

Collapse
 
andreligne profile image
AndrΓ©

I'm using a plugin called vim-fugitive since it allows me to stay in my when writing commits or staging parts of a file.

For other things (e.g., pushing, rebasing, bisecting), I'm using the terminal. It takes some time to learn all the commands, but after that, it's worked out well for me. πŸ˜„

Collapse
 
michaelcurrin profile image
Michael Currin • Edited

I started off learning git on the command-line so mostly fall back to that.

In VS Code and PyCharm, I'll use the GUI to change branches and commit. But for other stuff like viewing logs, doing a rebase, reset, push, etc. I use the command-line.

I do enjoy the IDEs I mention when it comes to resolving merge conflicts. PyCharm let's you see 3 views side by side and VS Code shows you a smart interactive layer on top of the plain text code which has <<< and >>> etc.

I haven't had a reason to download something else dedicated to Git / GitHub handling.

My git aliases for interest! :)

Collapse
 
pablohs1986 profile image
Pablo Herrero • Edited

I prefer the terminal + aliases, but I have GitKraken for when β€œI don't see it". Why? I find it very intuitive to use and very clear, it can also be linked to various services. GitHub Desktop seems tedious to me. Gitlens is fine too.

Collapse
 
tbroyer profile image
Thomas Broyer

Because I use both VS Code and IntelliJ IDEA (and even Eclipse sometimes, and of course Vim for some quick changes), I don't use integrated solutions (years ago, I used both Eclipse for Java projects and Visual Studio for C#, at the time I was on Windows and using Subversion, so TortoiseSVN was my go-to; then switched to Git, then to Linux as I no longer needed to do C#, and then to IntelliJ IDEA, and VS Code as I do more and more JS).
I never had to re-learn how to use Git when changing OS, editor, etc.

I use git-gui (most of the time in its git citool form) to stage changes and commit them, gitk for browsing history, and the command line for everything else (pull, push, rebase, switch branch; and occasionally git add -p for its edit mode).
git-gui is ugly, and it crashes if you use some emojis (in commit messages or code), but it does the job well and is very lightweight; and "builtin/official".

Collapse
 
valerauko profile image
Vale • Edited

I mostly use Gitkraken, but I'm also building my own alternative in my free time. Gitkraken is pretty and easy to use, but it's slow and often has trouble with bigger repos.

Collapse
 
neeldev96 profile image
Neel

Funny thing is that I actually made my own (😜). I was using GitKraken back in 2019 and it is honestly great. Greater than github desktop tbh.

Then I got comfortable with bash and started using that actively. Along with the js based projects I maintain, I also have a bunch of bash scripts on my digitalocean droplet which I constantly modify. So I needed a git UI client to track what has actually changed in the scripts. Git diff is good but visualizing things on the shell is not the same as viewing it from a UI layer. So I made a web based UI client crafted with React and Node JS. The web based UI client was originally developed for Linux and Mac alone, later it was made compatible with windows.

It's available as an npm package, so I just run it from the command line and open it in the browser to use it on the go. Using git from terminal is fine for me but this platform makes a few things better such as commit log tracking and intuitive source code diff.

github.com/neel1996/gitconvex

Collapse
 
madza profile image
Madza

Wow, this is cool 🀩 Good job! πŸ˜‰

Collapse
 
larden profile image
Jakub L.

I am using mainly tig which is not a GUI but CLI tool. Even though it generates cool and readable graphs in the terminal.

Collapse
 
olddutchcap profile image
Onorio Catenacci

I prefer the CLI for a few reasons:

1.) Faster

2.) Best feedback of all. Most times when something fails in the GUI the best way to fix the issue is to look for the message on the CLI

3.) Aliases. Just so much quicker than clicking through a GUI.

Collapse
 
andrewbaisden profile image
Andrew Baisden

I prefer the command line as well it just feels more natural and you don't need to use another tool. Plus when you create a new repo you get given set up code and not a recommendation for a GUI because there is so much choice.

Collapse
 
zapbampow profile image
Clayton Ingalls

GitKraken plus command line.

Whenever I need to see this history of a repo's commits and what changes were made in each file, I haven't found anything that comes even close to GitKraken.

However, I use the command line for my most common tasks, like committing, pulling, pushing, cloning, etc.

Collapse
 
bsara profile image
Brandon SarΓ  • Edited

I prefer the terminal. With git aliases, you can be set for anything you want to do very quickly, like formatting the logs to be all pretty or minimal in the terminal.

However, if i want to visually see large parts of my git history or view several branches simultaneously, I like to use a GUI. For me, lately, that has been Sublime Merge (made by the same guy who made Sublime Text). It works very well and I would highly recommend it.

If you have access to a JetBrains IDE, their git tools are amazing, but I would never run a full IDE just for the git tools. They are great if you already have it open though.

SourceTree is a very nice solution as well and it is what I always recommend to those who are new to git for a few reasons:

  1. It's super easy to use.
  2. It's hard to mess yourself up with it because it will generally warn you before you mess up your repo.
  3. It's a great way to discover the awesome features git provides. Because you have labeled buttons and menu items that are right in front of you as you go about your normal git business, it will make you wonder something like "what is bisect?" and then you know what to learn about/search for to become more familiar with git. (BTW, if you haven't, you should definitely look up "bisect", it's awesome).
Collapse
 
riekus profile image
Riekus van Montfort

Sourcetree to review + stage changes, kdiff for merge conflicts, and I try and learn a new git terminal command every now and then. Knowing the internals can be very helpful. Pulling, pushing, branching, rebasing, committing from terminal can be productive, but I still want a GUI when it comes to merges, cherry picking and an overall overview of the repo

Collapse
 
sarathkcm profile image
Sarath Kumar CM

Source tree outside vscode. Git lens in vscode for file/line histories. Git graph in vs code for repository history. Command line for push/pull/merge/branch or anything that modifies the repo - except committing or merge conflicts, for which I use vscode integration to see the diff and commit. And Sometimes I use lazygit from terminal. Phew!

Collapse
 
3zzy profile image
Ibrahim Ezzy

Surprised no one has mentioned Tower (git-tower.com). By far the best I've used.

Collapse
 
marjanb profile image
marjanb • Edited

For Mac Git Tower is great, but not free and only for Mac.
Using Fork, free and available for both Win and Mac.

Collapse
 
pointnova profile image
Julian Rothkamp

Tower has both a Mac and Windows version :)

Thread Thread
 
marjanb profile image
marjanb

Thank you for correcting this. Wasn't aware. I'm pretty sure it was for Mac only for some time.

Collapse
 
webinspectinc profile image
Timothy Miller • Edited

I generally use the command line, but when I need better diffs I use Sublime Merge. Probably in the minority, but I like how little extra "fluff" there is with Sublime, it just gives you the clearest view of the project without anything extra.

(Plus Sublime always shows you what command it's running in the background, so it's a good learning tool!)

Collapse
 
noxasch profile image
Alexander Dischberg • Edited

I use VSCode built in git + git graph. I turn on Git lens when collaborating. Was using github desktop (before rewrite) and then Gitkraken (cannot use with private repo anymore), sourcetree is just to buggy most of the time.

Why:
It's good enough for me, doesn't need extra resources
and bonus it's there inside my favorite code editor.

GUI is visual representation of what happening
git graph give me the git flow overview of all the commit
cherry pick commit line by line.
Stash / unstash when change brach easily.
Stage / unstage by line or whole file

I'm lazy to remember command after init the repo, i just want to see my code flow.

Cons:
A little bit of work, to set it as diff and merge tool.

Collapse
 
hanna profile image
Hanna

I personally use the new github cli or plain git in the terminal as it's what I'm most used to. Though I do use Visual Studio Code's git integration which key bindings and things to make my life easier.

Collapse
 
scroung720 profile image
scroung720 • Edited

My use of Git is distributed in this way:
1)Comparing commits, study tree structure - GitLens VS Code extension
2)Interacting with the local repo - zsh git plugin aliases in command line
3)Interacting with the remote repo - I use GIT CLI

Collapse
 
amitkurud profile image
amitkurud

I use git tools provided in Intellij Idea and Webstorm , They sufficient for me.

Collapse
 
teamallnighter profile image
Chris Connelly

gitKraken!

Collapse
 
mrjoops profile image
Alexandre Lahure

I kind of hate the Git CLI (I used Mercurial before and still like it better) and GitKraken is like a painkiller. It helped me a lot to tame the beast Git was for me, something the other Git GUI (SmartGit/Sourcetree) didn't achieve.

Collapse
 
shahnewaztameem profile image
Shahnewaz Tameem

I use Terminal only. If you wanna do stuff like rebasing, squashing I don't think git GUI is helpful at all.

Collapse
 
stevetaylor profile image
Steve Taylor • Edited

I use WebStorm’s built-in tools for viewing diffs and resolving conflicts. For everything else I use the CLI.

I sometimes use Working Copy on iOS.

Collapse
 
mucio profile image
mucio

Terminal, I have to feel the consequences of my dumb actions

Collapse
 
thedevdavid profile image
David

Using Oh My ZSH with git plugin to be faster. Aliases like, gp, gl, gst, gco makes so much faster than any GUI, I use VSCode GitLens too for a quick high-level overview

Collapse
 
hrishio profile image
Hrishi Mittal

I never got into them. I tried Github Desktop and GitX but didn't like them.

I just use the command line (am I the only one?).

Collapse
 
kaeptnkrunch profile image
Stephan B. R. Langenau

I tested a lot. Mostly i use the Terminal because i work with Linux. But i use this only for smaller projects or to make a short commit and push. For longer Project i tried GitHub Desktop, GitKraken. But when it comes to GitHub Desktops clients i was falling in love with GitAhead.

Collapse
 
prabhuignoto profile image
Prabhu Murthy • Edited

Gitkraken. I find managing multiple repos lot easier in kraken.

Collapse
 
djnitehawk profile image
DΔ΅ ΞΞΉΞ“ΞžΞ—Ξ›ΟˆΞš

just had my first play around with gitkraken. i think i'll start using it instead of visual studio for managing my repos.

Collapse
 
bykof profile image
Michael Bykovski

Fork.

Collapse
 
sbittis profile image
Sebastian Bittis

I'm using GitHub Desktop and Fork. Used SourceTree before, but it was incredibly slow...

Collapse
 
maskeddeveloper profile image
Masked Developer

Terminal Onlyyy

Collapse
 
sudhakar_parsi profile image
Sudhakar Parsi

I use Tortoise Git and I love it. it made it so easy to clone, sync and commit.

Collapse
 
itsasine profile image
ItsASine (Kayla)

IntelliJ as a git client is pretty nice just doing everything within the IDE. Otherwise, I use GitKraken due to the student license.

Collapse
 
nitinreddy3 profile image
Nitin Reddy • Edited

Usually, prefer the Git command line when I am working in Linux but if I am on windows the Github desktop.

Collapse
 
jessekphillips profile image
Jesse Phillips
Collapse
 
peiche profile image
Paul

My exposure to git is limited to BitBucket and GitHub. I use SourceTree for the former, the GitHub Desktop app for the latter.

Collapse
 
jancassio profile image
jancassio

terminal

Collapse
 
bjoern profile image
BjΓΆrn

Love GitKraken. Great UI.

Collapse
 
cuongnh1139 profile image
Nguyen Huy Cuong

I use terminal and source tree for review my commit

Collapse
 
helderberto profile image
Helder Burato Berto

Very often I use Emacs + Magit, but sometimes I use it in the terminal.

My aliases you can see here

Collapse
 
yasingencnet profile image
Yasin Genç

Sourcetree is enough for me.

Collapse
 
himito profile image
Jaime Arias Almeida

You can use github.com/mhutchie/vscode-git-graph with vscode :D

Collapse
 
sirawit profile image
Dragodzs

I use GitKraken very easy and help me improve productivity.

It has many features to choose from.

Collapse
 
ramyadhanush profile image
ramyaDhanush

I prefer using GitLens with VSCode, because it is easy to use and effective in developer teams. Haven't tried others mentioned in your post. Thanks for posting.

Collapse
 
ashking profile image
Ashwin

I love using sourcetree. I am comfortable with CLI but the GUI is even more productive for me!

Collapse
 
valenc3x profile image
Ricardo Valencia

after years of using terminal only and a bunch of aliases, Sublime Merge has been very good to me lately

Collapse
 
volkmarr profile image
Volkmar Rigo

I use Fork. Awesome client for windows and mac.

Collapse
 
axiol profile image
Arnaud Delante

Tried many of them and always came back to the terminal. Just a set of small aliases and we're good to go. The only UI I use is Github / Gitlab for merge request or conflicts some times

Collapse
 
royerpa profile image
Pierre-Alexandre Royer • Edited

I use Sublime merge, it is super efficient and it is close enough to the git cli.

Collapse
 
sakko profile image
SaKKo

i like smartgit, the UI is very simple.

Collapse
 
nbransby profile image
nbransby

git.live is not a git client per se but you might find it interesting nevertheless

Collapse
 
zilti_500 profile image
Daniel Ziltener

I am using the magnificent Magit.

Collapse
 
akrami profile image
Alireza Akrami

I mostly use git CLI. some time ago I tried to use GitHub Desktop, but returned to CLI, cause I found that more practical.

Collapse
 
adam_cyclones profile image
Adam Crockett πŸŒ€ • Edited

I use a whiteboard and draw the git tree by hand πŸŒ²πŸ˜…. IDK maybe webstorms integration and terminal.

Collapse
 
tylerauerbeck profile image
Tyler Auerbeck

I don’t use a GUI much as I’ve just grown more comfortable working on the command line, but one I still return to when the merge conflicts get particularly bad is GitKraken.

Collapse
 
rramname profile image
Rohit Ramname

We use BitBucket and I use Visual Studio plugin for BitBucket and it works pretty well.

Collapse
 
3vl profile image
Victor Lewis

Tower! It's the first thing I've found in years that got me off the command line. git-tower.com/