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)
Poll
Voting ended 1 March at 13:22.
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
0 people voted. 375
0%
Voting ended 1 March at 13:22. 103 comments
@b0rk I also do a lot of git operations via Magit in emacs, which doesn't really fall into either category! @b0rk I think if you consider a TUI as GUI for this poll, then magit would totally count as a GUI as well! @syntaxseed @b0rk I am keeping an eye out for gitbuttler. I use sublime merge when dealing with personal projects @syntaxseed @b0rk @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. ๐ญ @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. @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` @b0rk I default to command line, but use Git GUI when I need to review larger diffs and stage/revert specific lines. @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. @b0rk The only aspect I use in a GUI are things built into the editor / ide like showing blame context in the gutter. @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. @b0rk @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. 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. @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. @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 @b0rk GitHub desktop supports Linux? Didn't know that. I used it on Windows before, will give it a shot. @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. https://flathub.org/apps/io.github.shiftey.Desktop @shiftkey is doing an amazing job in maintaining the #Linux builds for @github Desktop. @b0rk I'm all for the terminal on that matter. ๐๐ผ @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). @b0rk Occasional VSCode GUI use to resolve merge conflicts or stage/unstage chunks, everything else CLI @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. @fuchsiii @b0rk @Flyingmana +1 It just depends on whether or not I ise an IDE or not... @b0rk VSCode has GUI git functionality built right in, and that tends to be more than enough for my needs... @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") 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 @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. @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). @b0rk I usually use magit in emacs, perhaps not a "GUI" per se, but it's certainly not cli @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 :) 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). @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. @b0rk GUI for history/diff viewing and commiting, command line for anything everything else, esp. DAG altering commands such as merge, rebase, sync, etc. thanks for the magit call-out :) it's easy enough to consider it a "GUI" for poll purposes, tho. :) 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. @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 @b0rk i literally don't know how to use a gui for git :D i only know the cli @b0rk On BSD and Linux I use the command line almost exclusively. On Windows I use VSCode most frequently but the command line also. @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. 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`) @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: https://github.com/rbong/vim-flog @b0rk I love using https://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`). @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. @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. @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. @b0rk same for 1) and 2) for me, but I prefer to resolve merge conflicts by hand. I use https://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.) @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. @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. @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. @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. @b0rk @b0rk I used to use command line only, but the commit message generator in IntelliJ's AI Assistant changed all that @b0rk I use the command line for everything but two things: blame (for easy โblame parent commitโ) and history browsing @b0rk @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. @cks @b0rk I never understood how people can live like that... clicking... instead of just running the command.
https://www.instagram.com/p/CztGe8UPmBB/ 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! |
@b0rk magit is my git tool of choice.