Is anyone here using a GUI for git? If yes - which one and why?
I ask because I like console, but at the same time have difficulties remembering all the commands. I'd like to try a GUI that is comfortable to use with only a keyboard.
[edit]
My inbox got fediversized, fantastic feeling.
I use a 50%-50% mix between git CLI and the built-in git tools in JetBrains IDEs.
To be honest, I could quite easily get by with just the JetBrains GUI - they have a super sophisticated GUI that can easily handle things like interactive rebase, cherry-picking, etc + they have a great conflict resolution tool. I just use the cli every now and then if I want to get something done quickly while I don't have an IDE window open.
These days I can run everything I need to with the git cli. I use the JetBrains visual merge tool to resolve conflicts, because doing that by hand is so awfully error prone, it very very intuitively maps to a visual process
Apart from the cli, gitk and git-gui are plenty good in my opinion, they could always be made better. And they are mostly always there with git Only thing I am miasing now is blame.
Lazygit changed how I use git, it is so easy to do all the daily essentials like branching, committing, and merging, but also also does more advanced things like interactive rebasing when needed.
I had searched for a proper git client, that was free and open source plus worked on both Linux and Windows, for a long time and I haven't looked back after finding lazygit.
I don't understand why people use command line only. Sure, learn the commands so if you need to use them you can, but most GUIs are far more feature rich than command line. With IntelliJ, I can easily view differences before committing, have it do code quality scans, automatically clean up any code it can, more easily choose which files I want to commit vs the typical 'git add .' I see most people do with command line, have separate changelists when pair programming, and much more.
One argument that continually comes up is that command line is faster. I completely disagree. If I want to just commit the code without reviewing it, I can use 2 hot keys and the code is committed and pushed. But as I do a quick readthrough of all the code first and review issues from the code quality analysis it does take more time, but still less than it would to do comparable things with command line.
TortoiseGit user here. Love that it integrates with Windows Explorer so I don't have to constantly be opening an app first to fire off some Git commands.
VS 2022 is finally somewhat usable for Git using the git Changes pane. The whole team uses it this way, and for many of them it's a first for git as well.
I don't use a GUI, with the exception of Meld as my primary difftool
At work I wish they were using git. But we got SVN. How I long for the ability to use pull requests.
But tortoiseSVN has some nice features (I'm stuck with windows over there) even if it's lacking in overall functionality.
I use the VS Code built-in git support for making commits, and fall back to the CLI for anything else.
You won't have trouble remembering commands once you use them often enough. And you don't need to know all of them, just the ones your workflow uses. My toolbox is commit, checkout, status, reset, rebase -i, merge, bisect. That's all I need day-to-day.
For example if you need to remember how to use the branch command you could look it up with
tldr git branch
which would give you an overview on the most popular use cases.
And in case you don't already know: You may want to use the history search tool of your shell by hitting CTRL-r and then for example typing branch. You'd get a list of past commands you have used containing branch that you can flip through by repeatedly hitting CTRL-r.
I use a mix of CLI, the Git UI built into VSCode, and Sublime Merge.
Sublime Merge is great for getting an overview, it's very snappy (especially when compared to Electron Git UIs), and I love the merge conflict editor. It's not cheap, but worth every penny.
If you're already comfortable working in the shell, you should check out tig. It's not as fully featured as the other clients named here, but it's an excellent viewer nevertheless.
Since I work in Linux and primarily code in languages like C and C++ (i.e. compiled langs), I work completely in the terminal, so I don't use any GUI. It's nice and I'm already there for my compiling so I might as well use it for git.
However, re remembering all the commands, there is a nifty website I found a while ago and bookmarked called Git Explorer where you basically choose from dropdowns of what you want to do and it gives you the command(s) for it.
I have some git blame extention in VSCode, but otherwise no. Something about using gui tool for git makes me feel so disconnected from it, like I'm not entirely sure what's going on, and afraid I'm going to fuck something up
Also, I forget commands all the time. Mostly ones I don't use often, like changing/adding/removing remotes, changing settings, etc.
I actually like the tooling built into VS Code. Added the GitHub Pull Requests and Issues extension for the PRs, pretty happy with it all at the moment. Before that I like a specific older version of SourceTree that didn't forget your credentials.
I use various extensions for Visual Studio Code. They add a million features, but these are the ones I find most useful:
I prefer to view the current status of my checkout in the sidebar of my code editor than on the command line.
It's easier to view a diff of a file and decide whether to stage or rollback changes in a GUI. With most GUIs you can even select individual lines of code and revert or stage them.
I like how Commit and Push and Pull are a single "Commit & Sync" button in Visual Studio code. Similarly there's a simple "Sync" button in the status bar.
Speaking of the status bar - it also has a counter for commits that need to be pushed or pulled. And it tells you what branch you're currently on. And whether you have uncommitted changes. Handy.
I find the GUI equivalent of git log --graph is significantly easier to understand when the graph is drawn with nice vector lines instead of ASCII art.
Finally - I don't just use raw git, I also use extensions like pull requests, and I create branches for issue numbers. I have an extension that shows pull requests in Visual Studio Code and also shows issues assigned to me, with a one click "Start Working" button to create a branch named after the issue and change the issue status to In Progress. And when I'm finished working on it, there's a button for that too.
I generally don't trust most git GUIs - a number of our developers have used SourceTree on OS X before and it's led to nothing but issues. The only one I trust is the one built into IntelliJ IDEA, otherwise I'll use commandline.
I use GitKraken. It has a beautiful interface. It's free to use non-commercially but I pay $50/yr so that it can connect to my companies Enterprise account. I know I'm weak with git (I get the concepts but I'm a visual person) so the money is worth it to me.
Developing in a Windows environment, I generally prefer Git Extensions.
It doesn't distract the eye with unneeded fancy and is very close to a command line git experience but still allows me a better visual sense of the repository and branches.
I'm a manager now, and I see people insisting on command line who have no idea what they're doing. Then don't! I think it's an awful attitude that real programmers use git command line, and GUIs are for babies. Please call out this attitude whenever you see it. Use tools that work for you. Git has a terrible user experience, let's face it.
Since I use Emacs I've been really happy with Magit, even tho it's UI has a bit of a learning curve to it. I've been also trying out Gitg since I moved back to GNOME and it's been really solid as well. It lacks a couple really nieche features but otherwise as a fast commit tracking/writing tool it's very good.
The repository I work in is huge, old, and the folder structures are wide and deep. It is normal to modify tens of files in almost as many folders for a single feature change.
SourceTree for managing staged files and committing.
CLI for pull, branch switching, and searching.
TortoiseGit for showing the log or blame of individual files and folders.
While I do most actions with the git command or the git fugitive plugin from tpope, I will sometimes whip out lazygit for certain things I don’t do that often.
"No. No, man. Shit, no, man. I believe you'd get your ass kicked, sayin' somethin' like that, man." - Office Space
That said and jokes aside, occasionally I'll use the integrated git in vscode but mostly use the terminal. I do recommend a Git cheat sheet to help become more proficient with the CLI interface.
I kinda do both? For some reason, I prefer the CLI when I clone a repo, but Sourcetree for committing, pulling, and pushing, and my IDE's built in git tools for merges.
I mainly program in Visual Studio so I use it's integration for simple commits, diffs, and checkouts. Anything more complicated than that I head for the command line.
I own sublime merge because it was cheap when I upgraded to ST4, but never use it. It's not bad or anything, but honestly the CLI is more convenient to use (and all the GUIs I've used have a lot of clicking involved). I don't know that you're going to find something better than the CLI, especially given your requirement ow "comfortable to use with only a keyboard".
Not really but sometimes if I need a visualization of something complicated that I can't see in my head I'll go to the network tab under insights in github
The log window gives me overview and almost every action I need. Switching, rebasing, creating and deleting branches and tags, pushing, fetching, merging, view logs of files, diffing, blaming…
The log view is still much better than the VS Git log view. And due to it's visual GUI it's much better than CLI when going beyond just one branch or a low number of my own branches.
Haven't seen it mentioned here, I've recently been using lazygit from time to time and I quite like it, especially committing only a few changed lines from a file is nice and quickly amending to old commits. I still use cli for more complicated stuff though.
I use sublime merge because I really like ST and want to further support the dev. I wish it had more integrations with github (and theoretically github alternatives), but I understand the reasoning not to. Before SM came out I just used the command line exclusively.
JetBrains have some quite extensive VC tooling built into their IDEs which I use almost exclusively. I used to do everything in the terminal, but I find it so much quicker and simpler to do it directly in the IDE.