DEV Community

kimdontdoit
kimdontdoit

Posted on

What's your favorite Git tool?

What's your favorite Git tool/GUI or is the command line all you need?

I've had enough of SourceTree crashing on me (Mac šŸ˜¤) so much that it pushed me to write my first #discuss post on dev.to

Sourcetree quit unexpectedly

Sourcetree quit unexpectedly for daysss

Top comments (18)

Collapse
 
fjones profile image
FJones

Exclusively CLI here, with no plugin tools. Git Bash on Windows, naturally.
Since I very often do bisects for tracing, manual repair of branches, and complex rebase/merge operations, I've found GUIs to be subpar.

Collapse
 
theawesomeguy47 profile image
TheAwesomeGuy47

Same as my experience. Git on the command line is and will be superior for a while to come.

Collapse
 
fjones profile image
FJones

Depends on your needs, really. A regular dev just concerned with merges and pull/merge requests is fine using GUI or web tools. More intuitive for them, or easier to handle (had a coworker use our Gitlab for merges even to the staging and integration branches). But bisect and rebase -i are important tools for power users, especially those with responsibility, and no GUI I've found handles them well.

I dislike the common diff/conflict resolve UIs (e.g. Jebtrains IDEs), but mostly because I've grown accustomed to git+nano. I see absolutely where they're useful for someone who prefers to work from the IDE. It just isn't my workflow. I much prefer seeing the diff on the shell, as well as using the less-commonly-implemented-in-GUI features, but I know I'm an outlier there.

Thread Thread
 
theawesomeguy47 profile image
TheAwesomeGuy47

Agree.

Thread Thread
 
kimdontdoit profile image
kimdontdoit

Thanks for your input

I'll keep git bisect in mind, I haven't heard of it before and it seems useful

What I'll miss the most are probably git graphs to keep track (stalk) what's going on in repos (although I haven't tried to get accustomed to git log) Do you think its not useful enough or have you achieved visualizing commit history differently?

I just copy/pasted a fancy git log --graph, and I'm not sure if my eyes like it lol

git log graph

Thread Thread
 
fjones profile image
FJones

I rarely use graphs, to be honest. But pure visualisation tools are also aplenty, not really a need to switch to a UI-based workflow.

Maybe it's because I work with relatively large concurrent teams that I don't see much point in graphs, but I've never found them to convey relevant information to me. If I need to know how a commit was merged, I can either use our gitlab for the lookup, or some CLI tool that traces back (written one myself once, in fact). I'm also a huge advocate for rebase-before-merge, so our graphs often don't really tell anything. And they break apart regardless of visualization at a certain amount of concurrent branches anyway (bitbucket still can't handle more than a handful of branches properly...).

Besides, once the merge commit is in, it's not really important to know which path a commit took, at least in my experience.

Collapse
 
kimdontdoit profile image
kimdontdoit • Edited

You may laugh at me, but what I found works best for me at the moment is a mix of Sourcetree, command line and VS Code's Git Lens, depending of what I'm doing

In my daily workflow, I find using a desktop GUI is especially useful to .. well .. visually compare and diff branches. Will switching to command line and getting used to it make me a better developer?

I've also tried Git Kraken and Github Desktop, but found limitations in both of them for my use cases. Looking to try Git Fork which was mentioned around here next.

Collapse
 
theawesomeguy47 profile image
TheAwesomeGuy47

Will switching to command line and getting used to it make me a better developer?

Yes, it will. I used to use GitHub Desktop but I found that it had less capabilities than what the command line had once I switched to it. Also, being trained in the command line is good and will help you in the developer journey.

Collapse
 
kimdontdoit profile image
kimdontdoit

Github Desktop is pretty but quite unusable, I'm not sure who the audience for it was. The answers and my experience seem to align with what you recommend though "DROP THE GUI" āœ‚ļø

Collapse
 
cadams profile image
Chad Adams

Built in git from VSCode šŸ™‚

Collapse
 
kimdontdoit profile image
kimdontdoit

My bad, I missed the update in your post šŸ˜… Do you use anything for a git graph/timeline when you have multiple branches?

Collapse
 
cadams profile image
Chad Adams

For a graph view I use this VSCode extension
marketplace.visualstudio.com/items...

I also use this extension a lot (For checking who last modified a file or a line in a file)
marketplace.visualstudio.com/items...

Collapse
 
corentinbettiol profile image
Corentin Bettiol

I use the git program from the command line, and sometimes the diffs in vscode.

Collapse
 
raguay profile image
Richard Guay

Iā€™ve been using gitui. Itā€™s fast and easy to use. Itā€™s a terminal base program, but has all the gui features you would need.

Collapse
 
kimdontdoit profile image
kimdontdoit

Interesting. They seem to emphasize on performance and this also caught my eye on their repo, which I think most would agree with šŸ˜‚ :

Unfortunately popular git GUIs all fail on giant repositories or become unresponsive and unusable.

Collapse
 
sophia768574 profile image
Info Comment hidden by post author - thread only accessible via permalink
Sophia768574

Such a great post. Thank you so much for sharing it. I am application developer and develop many mods of WhatsApp.

Collapse
 
lmail profile image
Liam

When I started coding Git CLI,
then Gitkraken and Github Desktop.
Finally, Git in IntelliJ and sometimes Github desktop ^^

Collapse
 
cheapwebmonkey profile image
Margeaux Spring

CLI FTW

Some comments have been hidden by the post's author - find out more