this post was submitted on 13 Dec 2023
492 points (94.2% liked)

Programmer Humor

19652 readers
1387 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 35 points 11 months ago (7 children)

I really never understood why one would need a GUI for git except for visualizing branches.

I feel like I'm crazy seeing so many people using clicky buttons for tracking files. I need like 4 commands for 95% of what I do and the rest you look up.

You're already programming! Just learn the tool!

And now there's a github CLI tool? I hate to beat a dead horse but Microsoft pushing their extended version of an open source tool/protocol is literally the second step of their mantra.

[–] popcar2 13 points 11 months ago (1 children)

FWIW not everyone using source control is a programmer. I've seen artists in game dev using GUI tools to pull new changes and push their assets.

[–] [email protected] 4 points 11 months ago

That's fair, there's plenty of uses for source control.

I was speaking from a programming context though, as this is a programming community.

[–] [email protected] 13 points 11 months ago

knowing how to program doesn't mean u need to do things the hard way.

heck the whole point of programming is to make things easier and faster.

[–] firelizzard 5 points 11 months ago (1 children)

Do you use the command line for everything? Do you edit with vim, view diffs with git diff, browse the web with links or lynx?

GUIs are useful tools. I’m happy with VSCode’s git integration. It’s just what I need for basic stuff like staging files and committing. I use the CLI whenever I want to do something like rebasing because I can type that command faster than I can figure out the GUI, but it would be stupid to artificially force myself to use the CLI for everything because of some kind of principal.

[–] [email protected] 4 points 11 months ago (1 children)

Yeah I actually just prefer the command line, I've never had to force myself to use it. I even tried using VSC for a bit recently but i couldn't get myself to like it. I just use nvim with some plugins in a tmux session now and its productive as hell.

Of course I don't browse the web with the command line. For merging branches, I always merge main into the working branch first, check conflict files, and go through the file finding the diffs and resolving them. I've used merge tools before that were sorta nice but I had my own issues with them.

Maybe it's the type of programming I do. I don't do any web stuff, so file count is down. For larger code bases I keep a non editor terminal up and will grep -re for word/phrase searching, find to look for specific files, etc. I'll occasionally use an IDE, typically eclipse based because embedded, but I don't find myself missing the features they add.

[–] firelizzard 2 points 11 months ago (1 children)

Of course I don’t browse the web with the command line.

That's my point. Browsing the web with a command line tool is obnoxious - you use a GUI for tasks that you find easier/more pleasant to do with a GUI. The difference is where that line is. When I'm reviewing what work I've done and checking through my code for debugging statements and other cruft I don't want to push, I prefer to have a nice tree view of my change set where I can click on an item, see what I've changed, select lines and stage them, select other lines and revert them, etc. I could do all of that with command line tools (though not that many have mouse support) but I already know how to do exactly what I want with VSC so why would I use anything else?

You’re already programming! Just learn the tool!

If someone is incapable of learning the tool, that's an issue if they're a developer. But your statement implies that everyone should use the CLI for everything. My point is that it's a matter of preference. The CLI is not superior and GUIs aren't superior. They're both just tools and if you can get your job done quickly and efficiently, that's all that should matter.

[–] [email protected] 1 points 8 months ago (1 children)

The CLI is scriptable/automatable and unambiguous when sharing instructions with coworkers. Both of these things make it very useful to know the commands. I do agree that it helps in some situations to visualize what is going on with a GUI/TUI though (neogit for nvim or magit for emacs are great if anyone is wondering), it can make things clearer at a glance.

[–] firelizzard 1 points 8 months ago* (last edited 8 months ago)

I agree that it is a very useful skill to know how to use the CLI. I agree that every senior developer should know how and every junior should be capable of learning. I vehemently disagree that developers should use the CLI as their regular means of interacting with Git if that is not their preference.

[–] [email protected] 5 points 11 months ago (1 children)

I primarily use GitHub CLI to interact with the GitHub API, not Git. I don't really see it as an extension of the Git CLI, which I use much more frequently. Everything you can do with it can also be done through their REST API.

I use it for things that aren't really git features, like:

Syncing repository admin, pull request, and branch control settings across multiple repositories

Checking the status of self-hosted actions runners

Creating pull requests, auto-approving them

[–] [email protected] 1 points 11 months ago

Thanks for the explanation, that does sound useful.

[–] [email protected] 2 points 11 months ago

Maybe not a GUI but using a TUI (lazygit) I am certain that I can do everything faster than you could ever do using the CLI. Tbf if a GUI Tool had the same shortcuts it would also be faster.

[–] coloredgrayscale 2 points 11 months ago

Checking the diff before commit, solve merge conflicts

Also if it's well integrated into the IDE it feels less like using a separate tool. For 95% of what I do the ide/gui feels better (fetch, pull, push, commit, checkout, merge). Usually just 2-4 clicks and no need to type the branch name (ticket number and then some)

For Reflog, reset I use the terminal.

If I had to start github desktop or another seperate gui I would use the terminal that's integrated into the IDE.

[–] [email protected] 1 points 11 months ago

I use LazyGit on the CLI for a "GUI-like" experience. I find it helps me make smaller more meaningful commits. If I'm working on a feature that enhances or fixes other modules in my repo to support, its trivial when done to make multiple clean commits out of the one feature that isolates the changes in functionality to individual commits instead of one medium commit.

On a large enough repo (e.g., monorepo), its a pain to do using git commands.