Gitkraken is the powerhouse, but i only use it for difficult commands
I used to swear by the git CLI. After using GitKraken for a few days, I shelled out the $95 for an annual license. It's really good.
If you have trouble remembering git commands for CLI have a look at the tool tldr
:
https://man.archlinux.org/man/tldr.1.en
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.
when I absolutely need to... git-gui.
Live by the console, die by the console.
(I should change things up and try to make my life easier -- vim for life) 🙃
I've been using the git gui extension for a while and resolve conflicts in vs code. I also just use a lot of cli
Would it work for you if you created git aliases for commands you can't remember?
I use git fork on Mac, same reason, I don't remember all the commands. Also want to see the history visualization
Seconded. Easily the best UI in my opinion. I usually commit through IntelliJ and use fork for everything else.
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 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.
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.
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 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.
I never use Sublime Text, but I love Sublime Merge. I dunno why. Something about the UI just works for my brain, and the merge UI is amazing. I only ever open it with smerge .
in a directory, and it's set to floating in my window manager so it pops up, I do my thing, and it goes away.
SourceTree when I was still a software engineer.
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.
Github desktop is very functional, I use it all the time
I am pretty hooked to SmartGit. I absolutely love their branch and commit view and haven't found another tool that visualizes the tree quite as good (for my taste; I assume it has to do with familiarization over time).
I did however buy a lifetime license when they still offered them. Their current pricing model would have probably turned me off before I even got hooked. It is absolutely worth a look though.
Sourcetree
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.
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
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.
I mostly use CLI but sometimes SourceTree, it's neat
I used to use GitKraken at my old job and loved it most of the time, slick UI and generally did what you wanted to do.
I'm using Atlassian SourceTree at my current place since it's what they give us and it's...fine. Not as nice as GitKraken.
I mainly use them because I originally used TFS's TFVC when I started my career and when we transitioned to Git, I started out using a GUI so never really learned to use the CLI.
My office blocks git through the CLI/VS Code Tools but somehow GitHub desktop works. No idea why.
Github desktop is the only way I know how to clone my private repo. I do not understand how to clone my private repos through CLI.
Github desktop will get you into trouble if you ever try to work with a team. Fine for solo development
I use Github Desktop but am looking to start moving toward CLI soon for this reason; though to be honest, I only know it's not good practice and don't know the reason why. What kind of issues can happen in a team environment using it?
The CLI and probably other more advanced guis are going to give you the option to:
- bisect: very useful for debugging. Like definitely check it out.
- rebase: excellent for clean commits. I use it all the time to squash commits together
- diff arbitrary branches and commits. Super useful for debugging.
- cherry pick: useful to apply a commit from a different branch or remote
- Apply: I use it to pass around patches for things for testing / debugging.
That's just off the top of my head and also stuff that you can learn on the job. Good to know it exists though. I still use a "gui" (fugitive for vim) for simple tasks, like staging files 🙂
Thanks for this, absolutely helpful information.
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 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".
I don't have a recommendation, but I understand the desire for excellent keyboard support in a GUI. I switched to Linux after 3 decades on Windows and I really miss doing all the screen navigation from the keyboard. In Windows, the only time I used a mouse was inside things like drawing tools and badly written apps with inadequate or non-standard keyboard support.
I use TortoiseGit.
The log window gives me overview and almost every action I need. Committing, diffing, switching, rebasing, creating and deleting branches and tags, pushing, fetching, merging, view logs of files, blaming, filtering…
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.
Programming
All things programming and coding related. Subcommunity of Technology.
This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.