4 ms·
> Git as a version control system is great, but it desperately needs an "apt style" revamp. I'd say that this is one of the reasons for why many prefer to use
by KronisLV 4y ago
> Git as a version control system is great, but it desperately needs an "apt style" revamp.
I'd say that this is one of the reasons for why many prefer to use either integrations with their IDE, or graphical tools like SourceTree, GitKraken or even something more basic like Git Cola.
Git actually has a page listing other GUI software: https://git-scm.com/downloads/guis https://git-scm.com/downloads/guis it's nice to have many options, some might also like the workflow of TortoiseGit, especially if they've previously used TortoiseSVN
Personally, I also fall into this camp: and if I need to do something "fancy", then it's quite likely that I've diverged from the usual "happy path" too far and should rethink my approach (and if necessary, then just drop down to CLI after some googling). Of course, there are various camps in regards to all of this, but being able to stage/unstage individual code chunks/blocks and spread out/group changes that have already been done in files over multiple commits feels like a nice quality of life improvement. Plus, the diffs that something like the JetBrains IDEs show you, as well as the ability to look at the history for a particular selection is also nice.
Then again, there are also many who don't rebase their branches, or even don't select squashing merge commits in whatever UI they might use (e.g. using GitLab/GitHub for their code review functionality and other features), which some might dislike for any number of reasons. I guess that just shows that there are many different workflows and people flock to whatever they feel comfortable with (or whatever their org/team mandates).
As for the actual CLI, in general there are few programs out there that actually feel good and usable to me, one of which is the Docker CLI (for the most part). I actually compared its discoverability/usability to something like tar previously here: https://news.ycombinator.com/item?id=29339018 https://news.ycombinator.com/item?id=29339018
Something like Typer actually let's you create your own interfaces like that, though the new formatting is a bit curious: https://typer.tiangolo.com/ https://typer.tiangolo.com/
That said, I wish we had more TUI software as well, such as https://k9scli.io/ https://k9scli.io/ or even https://github.com/bcicen/ctop https://github.com/bcicen/ctop
Edit: actually one bit of functionality from Git that I miss would be telling it to treat certain changes in the working copy as something that shouldn't show up as modified, but also not even show up as something that can be staged/committed. Maybe something like stash, but whilst keeping the modified files in the working copy.
For example, a local database instance that I have doesn't work with how the app wants to use it (suppose that I cannot fix this for any number of reasons) and therefore I need to change every instance of:
ORDER BY NLSSORT(some_column, 'NLS_SORT = custom_nls_value')
to:
ORDER BY NLSSORT(some_column, 'NLS_SORT = standard_nls_value')
across the codebase, which means that I might have 100+ changed local files.
I just need those changes locally so the local database would launch and keep working, but I don't want to have to look at all of these files as "changed" when deciding what to commit. Of course, at that point you might run into some hot water regarding what would happen if the files that contain this value would actually be altered.
- afiori 4y ago> actually one bit of functionality from Git that I miss would be telling it to treat certain changes in the working copy as something that shouldn't show up as modified, but also not even show up as something that can be staged/committed. My guess of how git would like you to solve this problem would be with a throwaway commit that you then delete with an interactive rebase. It requires you to keep track of which commits you need to push or remove but it is doable (Actually due to a particular situation I do something very similar at my job) Which lead into what I think is a critical problem with git: lack of visualization of data; in my opinion git is unusable without a GUI because sometimes you need to juggle a few branches and you need good interactive graphical representations of a lot of the git database.
- KronisLV 4y ago> My guess of how git would like you to solve this problem would be with a throwaway commit that you then delete with an interactive rebase. That's actually a good idea (even if the method feels a bit... contrived), thanks for the advice!
- afiori 4y agoOne of the major drawbacks is that git has no way (AFAIK) to rebase multiple branches, so if above that throwaway commit you have multiple branches, tags, or merges then it is not immediate to rebase the whole tree.