DEV Community

1punchkim
1punchkim

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

Discussion (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
1punchkim profile image
1punchkim Author

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
1punchkim profile image
1punchkim Author • Edited on

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
1punchkim profile image
1punchkim Author

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
chadalen profile image
Chad Adams

Built in git from VSCode 🙂

Collapse
1punchkim profile image
1punchkim Author

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

Collapse
chadalen 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
1punchkim profile image
1punchkim Author

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