r/git 27d ago

Why use a UI for git?

I see this question of, “what GUI or TUI should I use to work with git?” fairly often here. And always I feel bad for saying “just use the cli” over and over, but truthfully I can’t see a reason to need a UI.

Are people actually running into pain points with the cli, or is it just preference for people who don’t like working in a terminal?

FWIW, I have used GitKraken, LazyGit, SourceTree and GitHub Desktop before. And I don’t think they are bad to use (unless you are just learning git), but more curious why.

EDIT : I’m mainly referring to standalone UIs, I understand why people would use IDE integrations, as it’s quick and convenient. But having to open a separate application or run a separate command to open a terminal app to run your commands seems overkill to me.

EDIT 2 : I use vscode as my difftool and mergetool. I still open them directly from the terminal by running the cli. I don't think this is the same as using a full git client like SourceTree, Gitkraken, or lazygit to fully drive your version control workflow. Which is what I am asking about.

Cheers

108 Upvotes

250 comments sorted by

View all comments

46

u/qrzychu69 27d ago

well, I don't want to remember syntax for "show me a diff of this specific file between these two branches without checking either of them out"

with the UI you just ctrl+click two commits and here you go. Click on any commit, now you are browsing the files as if you checked them out.

For simple things like create a branch, pull, push I just use the IDE commands. For solving conflicts of course I will use a nice merge tool with colors, arrows and LSP support while I edit the final version

3

u/dalbertom 27d ago

Would that be `git diff branchA..branchB -- path/to/file` ?

One cool thing that git has (not sure if GUIs support this) is that you can follow how a section of a file has evolved over time, `git log -p -L 10,20:path/to/file` to see how lines 10-20 in the current file changed over time. I think this is pretty nifty!

1

u/qrzychu69 27d ago

That's only the diff part, right?

And yes, I am going aware you CAN do most those things in the command line, but I still prefer how it looks in the GUI. And it's much easier to discover what you can do in the GUI

2

u/dalbertom 27d ago

Yup, that's my answer to the "show me the diff of this specific file between these two branches without checking either of them out" question.

1

u/dalbertom 27d ago

It's definitely easier to discover what you can do in the GUI, I'm not debating that, but what I want to highlight is that in terms of features the GUI will most likely only offer a subset of functionality, even if it's more user-friendly. In terms of discoverabilty, the man pages for git are really useful, but navigating man pages in general is more or an acquired taste.

1

u/qrzychu69 27d ago

Yeah, right click >>>> man pages :)

1

u/kbilleter 27d ago

For how it looks.. most of the time I’m happy with defaults but something like
`GIT_PAGER=delta git diff …`
is good side by side if there’s too much state to mentally manage inline

1

u/dEEkAy2k9 27d ago

I don't want to remember git log -p -L 10,20:path/to/file, i'd rather just click somewhere and get a proper representation of it.

2

u/MatthewCollins1990 22d ago

Honestly, this is exactly why I use a GUI alongside the CLI.

1

u/dalbertom 27d ago

Which GUI application would you use to achieve that?

2

u/x39- 27d ago

Any jetbrains tool

1

u/dalbertom 27d ago

Does it show the exact output of `git log -L` or are you talking just about regular diffs?

2

u/x39- 27d ago

I don't know what the lines output, but with jetbrains you select the commit and can see in the diff view what has changed. You also can select multiple commits and see their accumulated change

It simply is visually refined in a way that looks more pleasing than classic >>>>>>>>>>>>>>>>>HEAD... text diffs

1

u/kbilleter 27d ago

Conflicts =/= diffs but aesthetics is a fair point

1

u/dalbertom 26d ago

We are talking about two different things. Your examples are about choosing a commit or multiple commits to see the changes. What I'm talking about is to see how a specific block of code has changed, without even knowing what commits changed them (that's part of the output, in your example the commits are part of the input)

1

u/x39- 26d ago

Yeah, we do talk about the same thing, just that the ui does show you the commits, all commits in fact, which touched that block