Email or username:

Password:

Forgot your password?
Julia Evans

poll: do you use git on the command line or in a GUI?

(you can pick more than one option if itโ€™s a mix of both, sorry magit users I didn't have space for you in this poll)

Anonymous poll

Poll

command line, regularly
1,832
0%
GUI, regularly
666
0%
command line, occasionally
290
0%
GUI, occasionally
375
0%
0 people voted.
Voting ended 1 March at 13:22.
103 comments
momo

@b0rk magit is my git tool of choice.

Simon Tatham

@b0rk I also do a lot of git operations via Magit in emacs, which doesn't really fall into either category!

Julia Evans

@iheardata i have no idea, didnโ€™t have space for magit users in this poll sadly

Atemu

It's interactive and it's certainly not CLI, so I counted it as GUI.

Brian Gruber

@b0rk I think if you consider a TUI as GUI for this poll, then magit would totally count as a GUI as well!

Sherri W (SyntaxSeed)

@b0rk Command line, reluctantly. I can't find a solid #Git GUI app for #Linux that works with private repos & doesn't have a subscription fee.

Back in my Mercurial days I used TortoiseHg & it was so nice.

Not Evil

@syntaxseed @b0rk I am keeping an eye out for gitbuttler. I use sublime merge when dealing with personal projects

Sherri W (SyntaxSeed)

@skrzatu @b0rk Yeah I've reviewed the options on that page. Several times.

They are either abandoned, too basic, not for Linux, don't work, or subscription required for private repos.

I eventually just had to git-gud at git on the CLI.

MithicSpirit

@syntaxseed @b0rk
It's surprising that they behave differently for private v. public repos. As far as git itself is concerned the two are indistinguishable (except you'd need some form of authentication to fetch).
Do you mean a frontend that also handles stuff like Github issues ans pull requests?

Sherri W (SyntaxSeed)

@mithicspirit @b0rk It's a common upsell tactic - free for opensource! But you 'rich' commercial users have to pay! GitKraken uses this model.

To be clear I'd happily make a one-time purchase of software... but ongoing subscriptions are nickel & dimeing me to death. ๐Ÿ˜ญ

โœฟ Floby ๐Ÿ’‰๐Ÿ˜ท๐Ÿ’จ

@b0rk I answered GUI occasionally for the integration (fugitive) I use with my text editor: mostly difftool and staging chunks. Most of the rest is through command line.

lampsofgold

@b0rk does git have a gui that keeps the semantics the same between command line and gui? My main issue with tools like sourcetree is e.g. when Iโ€™m trying to work git through a proxy and the settings are all called something different in source tree than `git config`

Cecilie ๐Ÿง™โ€โ™€๏ธ

@b0rk I default to command line, but use Git GUI when I need to review larger diffs and stage/revert specific lines.

Clemens Brunner

@b0rk I'd probably use a GUI more if I knew how to fetch and rebase onto upstream (not origin) in VS Code. I couldn't even find this workflow in the GitLens extension.

Cameron Watters

@b0rk The only aspect I use in a GUI are things built into the editor / ide like showing blame context in the gutter.

Ramin Honary

@b0rk I would say the Emacs "Magit" porcelain qualifies as a GUI, even though you can (and some people probably do) use it through a terminal emulator.

AliveDevil

@b0rk
^all of the above, depends on
- Time of Day
- Month
- Workload
- Type of operation I have to perform
- Tiredness

Raphael Dumas (he/him)

@b0rk we do a most of our development on remotes, either via JupyterHub or VSCode over SSH. For the latter I forgot until checking the replies that it would count as a git GUI.

Daniรซl Franke ๐Ÿณ๏ธโ€๐ŸŒˆ

@b0rk

It's probably stockholm syndrome speaking, but I haven't found a git GUI that didn't confuse me even more than git's arcane command line does.

Neblib ๐Ÿฅฅ๐ŸŒด

@b0rk I tend to use both pretty regularly for different tasks.

rvstaveren

@b0rk using tig as the โ€œgit guiโ€ these days. Before that Sourcetree from Atlassian

Emmy :hatched_trans_egg:

@b0rk@social.jvns.ca I usually use the git integration built into my IDE (Eclipse or VSCode). But I also have some very useful git commands in my shell history that I occasionally use ctrl-r to find and execute as-is. I almost never use git cli other than these "historical" commands which I looked up once in the past.

Dave Hay

@b0rk for me, VSCode is the GUI of choice, probably 50:50 split with the git CLI - plus occasional merge conflict resolution via the GH web UI

Jakob Gillich

@b0rk I think I would prefer the GUI if there was a good one on Linux. I use gitg occasionally to look at changes, VS Code to commit and cli for everything else.

alexanderadam

@jgillich @b0rk I can also recommend the GitHub desktop as a GUI.
It's even available via FlatPak and of course it's not restricted to usage with GitHub exclusively.

Jakob Gillich

@alexanderadam @b0rk GitHub desktop supports Linux? Didn't know that. I used it on Windows before, will give it a shot.

alexanderadam

@jgillich @b0rk yes, I'm using it for years now on Linux and I'm a @FlatpakApps fan so I stopped using the .deb at one point.

flathub.org/apps/io.github.shi

@shiftkey is doing an amazing job in maintaining the #Linux builds for @github Desktop.

Jakub Narฤ™bski

@b0rk There is yet another option - use Git via integration with the editor or IDE.

9Lukas5 ๐Ÿš‚ ๐Ÿง

@b0rk I'm all for the terminal on that matter. ๐Ÿ™Œ๐Ÿผ
The GUI is just in VSCodium to look at the commit-graph and diffs ๐Ÿค”

postweber

@b0rk I only use a GUI for one thing, which I do a lot and which the CLI is terrible at. Staging some (but not all) changed lines of a file.

ajn142

@b0rk both occasionally because git isnโ€™t really part of my job, but it is useful

Brian Swetland

@b0rk I do all operations using the commandline interface, but I do use gitk as a visualization tool at times (usually when doing a bunch of rebasing or merging and needing to figure out what goes where).

plaes

@swetland @b0rk There's also a TUI interface called tig which doesn't fit this poll..

Simon Sapin

@b0rk Occasional VSCode GUI use to resolve merge conflicts or stage/unstage chunks, everything else CLI

Fuchsiii~~~

@b0rk @Flyingmana hm... both for different things... to manage branches and look at diffs I like a GUI tool called Fork. To pull and stash I like to use the terminal.

Kevin Karhan :verified:

@fuchsiii @b0rk @Flyingmana +1

It just depends on whether or not I ise an IDE or not...

Stephen Greenham

@b0rk VSCode has GUI git functionality built right in, and that tends to be more than enough for my needs...

Alex Rock

@b0rk The only GUI I use is my JetBrain IDE's, for two things:

* Code review before commit (with partial file selection just like "git add -p")
* Conflicts resolution

All the rest is done in CLI.

Though when I don't need to review the code (which can happen for small changes), I do check the diff in CLI for my review, and commit in CLI instead of my IDE.

All the rest, like rebasing, bisecting, log/graph, reflog, all this in CLI

Thib

@b0rk I'm using the command line with as little customisation as possible because I want to be able to use it on most computers, even those where I can't install new tools.

I would like to use a GUI more because it seems more intuitive. I think I could learn more about how git works if a GUI visualised it for me.

I'm mostly afraid to invest time learning a tool I can only use at home.

barries

@b0rk I'm counting lazygit as a GUI.

It is very true to git concepts and makes annoying things like amending an old commit super easy.

I also use the command line a lot, often with two letter convenience wrappers.

/me

@b0rk
gitk for going through the history.
Meld for complex diffs and merges.
Everything else I usually do on the command line.

(Not including the occasional web UI such as Gitlab)

Brendan

@b0rk I mainly use Tower.app โ€“ I find it very helpful for interactively splitting up changes into separate commits and for a limited amount of rebasing. For more advanced rebasing, GitUp is quite nice. I also find Git Lens in VS Code helpful for seeing the blame for given lines directly in my editor (if that counts as a GUI).

mxey

@b0rk editor integration for basic stuff, CLI for anything more complicated

unhinged and unafraid

@b0rk I usually use magit in emacs, perhaps not a "GUI" per se, but it's certainly not cli

Kuchenmampfer

@b0rk I use the CLI when doing stuff in neovim and the GUI when doing stuff on PyCharm. Other use cases are rare, but usually also CLI. Thanks to watching a friend using it and reading what you post here, I now feel comfortable enough in the CLI :)

Ben Zanin

@b0rk hmmmmmm does magit within emacs count as CLI if I'm running it inside an SSH terminal..?

(I answered the poll meaningfully already, this is just out-loud rumination)

Matthias

@b0rk GUI is just superior for review and selective staging, for everything else CLI.

John Lusk

@b0rk

Mostly command line because I never know what a tool is going to do, but VS Code for diffs before I'm about to commit and when I get the case of a branch wrong on Windows (e.g., User/JLUsk/12345-Fix-the-thing, spot THAT error).

Brian Campbell

@b0rk I'm going to count Magit as a GUI, so I'll vote for both "command line, regularly" and "GUI, regularly".

I use Magit more often, but I do use the command line often enough to consider it regular. I also use gitk pretty regularly to visualize history.

David Blanchet

@b0rk GUI for history/diff viewing and commiting, command line for anything everything else, esp. DAG altering commands such as merge, rebase, sync, etc.

Richard Barrell

@b0rk one of the weird problems I've had a couple times is when I go helping newcomers to git, they are using a GUI tool that I've never seen before. It ends up being a surprisingly difficult game of "hunt for the XYZ button" or worse "try to guess what the people who made this app renamed XYZ to in an attempt to be 'helpful'." which takes a while and is a bit frustrating.

I'm on "cli constantly, gui occasionally" because the cli has all the verbs I need to manipulate stuff but GUIs have better history visualisations. Usually gitk alone suffices.

@b0rk one of the weird problems I've had a couple times is when I go helping newcomers to git, they are using a GUI tool that I've never seen before. It ends up being a surprisingly difficult game of "hunt for the XYZ button" or worse "try to guess what the people who made this app renamed XYZ to in an attempt to be 'helpful'." which takes a while and is a bit frustrating.

Emelia/Emi

@0x2ba22e11 @b0rk Same here with "helping people that use GUIs", especially github's app... I had to help rewind a bad merge on my last team because someone clicked "my changes" (or whatever that button is called) and discarded all the recent work on main in a way that "tricked" git into thinking it was actually up to date with main... had to rewind to before the merge and force-push a corrected merge commit, which straight up didn't appear to be possible with github's app. (at least at the time, it didn't appear to have a way to reset a branch to a prior commit?)

@0x2ba22e11 @b0rk Same here with "helping people that use GUIs", especially github's app... I had to help rewind a bad merge on my last team because someone clicked "my changes" (or whatever that button is called) and discarded all the recent work on main in a way that "tricked" git into thinking it was actually up to date with main... had to rewind to before the merge and force-push a corrected merge commit, which straight up didn't appear to be possible with github's app. (at least at the time,...

jsled

thanks for the magit call-out :)

it's easy enough to consider it a "GUI" for poll purposes, tho. :)

Aaron

@b0rk Iโ€™m an odd case but I use Visual Studio for Stage and the command line for Pull, Push, Commit, Clone. I use the process of staging items one by one to read through the diff before doing so to verify I didnโ€™t leave a stray TODO or something in the code.

james

@b0rk

I answered both, regularly. I tend to use the CLI for small commits when Iโ€™m having a good ADHD day and am working on one bit of my task at a time. Where each commit tells a coherent story. I also use it for branch creation, pulling, pushing, branch creation, simple diffing, stashing and popping, and interactive rebasing.

I am a chaos demon though, so when Iโ€™ve done seven things at once, I will use GitHub Desktop to view all my changes and group them into commits as best I can. I also like to use it to see a visual representation of my upcoming PR, so I can do my own pre-PR review before then drafting that PR and doing a second pre-review to catch any easy mistakes before sending it off to my colleagues.

@b0rk

I answered both, regularly. I tend to use the CLI for small commits when Iโ€™m having a good ADHD day and am working on one bit of my task at a time. Where each commit tells a coherent story. I also use it for branch creation, pulling, pushing, branch creation, simple diffing, stashing and popping, and interactive rebasing.

jack will miss this server

@james @b0rk I might need to start doing this, especially as I start to spend more time on pull requests vs working on solo projects

james

@JackEric

Would be very happy to talk you about how I do PRs, from before itโ€™s created, to during, to after to try and be a good team member if youโ€™re ever interested.

@b0rk

jack will miss this server

@james oh thanks, I'd appreciate that!

it's a flight sim plugin, a simulation of a 90s GPS unit, mostly in an 18,000 line Lua file. I notice bugs while using the plugin and rather than flood the repo with issues, I've waited until I'm ready to provide a solution alongside - so last night I raised ~4 new issues and 5 PRs, all very small fixes, not always thoroughly tested

github.com/todirbg/kln90b/issu

Brooke Vibber :blobcatcoffee:

@b0rk i literally don't know how to use a gui for git :D i only know the cli

Zalasur ๐Ÿต

@brooke @b0rk Yup, same here. Every time someone asks me for help with git and we do a screen sharing session only for me to see some sort of user interface instead of the command line, I'm like "Sorry I cannot help you."

nadja

@b0rk both, regularly too. I've gotten really used to the CLI for most git stuff, but for fiddling with git history, merge conflicts and so on a good GUI (I mostly use the one in the JetBrains IDEs) is so much nicer to use than the CLI

BoxOfSnoo

@b0rk oops, I meant to multi-select. Add one vote for command line 90% of the time

Tim Kellogg

@b0rk tig โ€” a command TUI, is how i mostly use git

Marty Fouts

@b0rk On BSD and Linux I use the command line almost exclusively. On Windows I use VSCode most frequently but the command line also.

Ogi

@b0rk I have found that I primarily use the command line, but I do like sublime-merge when I need to work with _part_ of a commit, or want to stage only part of the changes. I'm sure I can do that in the command line, but the visual indicator of what lines specifically I'm working on is helpful.

Julia Evans

from the replies: the main things git command line users seem to prefer to use a GUI for are:

- staging complex changes (instead of `git add -p`)
- viewing history or complex diffs
- merge conflicts

Pirate Bady

@b0rk One other place where I find git cli to be confusing/insufficient is for viewing log graph. The lines of different branches seem so hard to keep track of. Currently I rely on gitlab's graph visualization when possible or use gitk in rare cases.

Recently found this vim plugin which looks good enough such that I'm planning to give it a try: github.com/rbong/vim-flog

xypnox

@b0rk I love using github.com/extrawurst/gitui for adding files or chunks of lines for commit or for quickly viewing changes of a specific commit. The rest is done via cli (including committing). The commit message editor is neovim and it includes preview of the changed lines (`git config --global commit.verbose true`).

Thomas Broyer

@b0rk ๐Ÿ’ฏ

Fwiw, I like using a GUI (`git citool`) for crafting commits, whether "complex changes" or not, as seeing the diffs invites me to review the changes before staging and committing them, rather than "blindly" adding the files.

Matthew Weier O'Phinney

@b0rk I just realized I selected "CLI" as my driver... but I wonder if vim-fugitive counts as a GUI? I use that ALL the time, and in particular to stage changes.

Matt McIrvin

@b0rk For me there are really three avenues: CLI, GUI, and the Bitbucket (or, one upon a time, Github) web interface for branch and pull request management.

I use the git CLI for most local operations, but branches are usually created and merged non-locally through Bitbucket. And when there are conflicts that make that impossible, I use Bitbucket's Sourcetree tool along with Visual Studio Code's merge support to handle them.

elhult

@b0rk well that is EXACTLY the case for me at least. :)

Hawken

@b0rk same for 1) and 2) for me, but I prefer to resolve merge conflicts by hand.

I use GitUp.co to handle complex staging needs, a mix of that and Sublime Merge for history, and I also use GitUp for editing branches (as a better interactive git-rebase; you can delete, rearrange, and edit commits without having to do them in a batch, so you get feedback more quickly.)

Pettinato ๐Ÿณ๏ธโ€๐ŸŒˆ๐Ÿณ๏ธโ€โšง๏ธ๐Ÿ‡บ๐Ÿ‡ณ๐Ÿ‡บ๐Ÿ‡ธ

@b0rk I use git on the command line as a separation of concerns. Over _here_ I do coding, and over _here_ I interact with git.

The Detroit Software Works

@b0rk I like GUI for branch viz.

I used to depend on GUI for staging complex changes, but Iโ€™m moving *towards* `git add -p` for that.

Jack

@b0rk I use the vanilla vscode interface for adding/removing files to stage as I find the action of previewing then selecting individual files there much more mentally reliable than 'git add' ing otherwise arbitrary filenames. But I use the command line for simpler stuff like log (via aliases), merge, running through a rebase, etc.

Jill

@b0rk GUI for me is the git integrations in VS Code and Visual Studio. I mostly go to the command line when I'm getting an error that the UI is not communicating well, or if I'm trying to do something other than a basic checkout/push/pull.
GUI is great because I never have to manually set the upstream branch ๐Ÿ™„

Ben Berry

@b0rk
this might aound backwards, but I prefer the command line because I'm never sure what GUIs are going to do, so they scare me. The GUIs I've tried (mostly just the ones baked into IDEs) use different language to describe what's happening, so I'm never confident I'm doing the right thing.

Ken Kousen

@b0rk I used to use command line only, but the commit message generator in IntelliJ's AI Assistant changed all that

Philip Hofstetter

@b0rk I use the command line for everything but two things: blame (for easy โ€žblame parent commitโ€œ) and history browsing

penryu

@b0rk I occasionally use it inside my editor, which runs in text mode, but it felt like it was "GUI in spirit" for this poll.

Holly Becker

@b0rk
I uses a git GUI (sublime merge) exclusively as a visualizer. I stage changes with VS code. Everything else (commit, rebase, pull etc) I do on the command line. I used to use git add -p a lot but I guess VS code's staging process is pretty good.

Min RK

@b0rk I almost always use a gui (Fork) for making commits, terminal for ~everything else.

Chris Siebenmann

@b0rk I voted command line + GUI, with the latter being for my Magit usage (and I guess Github blame view). I use the command line for pull, rebase, log, diff, and many blame operations. I use Magit for committing things, especially selective commits, and thus for checking diffs before I commit and so on. (And some use of git-timemachine in Emacs to move back and forth through the history of a file to track things.)

But my git use is odd since I track and monitor a lot of upstream repos.

anarcat

@cks @b0rk if magit counts as GUI, then i'll have to change my vote...

Author
@cks @b0rk I never understood how people can live like that... clicking... instead of just running the command.
https://www.instagram.com/p/CztGe8UPmBB/
ร—

@b0rk I have used @fork_dev for the last 5 years or so and I can't be any happier

Felix Neumann

@b0rk

I work in IntelliJ, and itโ€™s Git UI is so good (or I spent enough time to get used to itโ€™s rough edges, too), that I feel much less productive on the CLI.

I wonder why IntelliJ users still use the git CLI, esp. for staging, writing commit messages, diffs and git blame.

But also branch operations and git log are good enough or even really good, depending on the use case. I totally recommend the interactive rebase UI!

Go Up