TortoiseGit is not good.
That depends...
It does make some alternation to how some git features a wrapped, it still shows that it comes from svn. That will affect people who make use of the index, and add stuff, but commit much later (in the added form, ignoring the worktree)
It also doesn't expose all features.
But it gives a good base line to work with. And it is well integrated into the OS (for people who like to call it from the context menu of the windows explorer).
Actually, if you don't access it via windows explore, then you are indeed probably left with very very little.
One thing I was missing, but able to tweak via the registry was a custom argument to "git log" (viewing all branches, except a list of filtered out).
For example you work on a repository where someone made a force push. In that case you want to just fetch the data, inspect what was changed, was it just an amendmend to an existing commit, was it a reabse, was something deleted from the history, or a full restructuring of the branch, and in each of those cases you need to do something different. A GUI tool fundamentally cannot do that, it will usually see that fast forawrd was not possible and either ask you if you want to do a 3 Way Merge or a reset, the former can completely undo rebases, deletions or restructuring, the latter can completely nuke your whole work.
This is simply not something that can be easily displayed in a message dialog with a discrete number of options.
Well ok, with command line you can have a script, that contains your favourite (re-)actions.
Though that difference between commandline and gui is not git specific.
But otherwise if I do "git pull" or "git fetch" or "git remote update" from commandline, then it will also download, and then try either ff or rebase depending on my "git config", and if that doesn't work, it leaves me with my old state. So does the GUI (at least Tortoisegit on any repo I have used it with).
So then on the command line, I also have to deal with the forced update. Exactly like on the GUI.
And on the GUI I can also make other choices. Once I said "do nothing, leave me with the diverted branches", then I can perform any operation that git has. (Assuming the GUI has an implementation that provides complete access to all git commands)
Besides:
the latter can completely nuke your whole work.
No, it can and does not.Well, that is unless you mean:
- Not yet committed changes in the worktree (or index: added but not committed).
- You keep ignoring that something went wrong, for weeks until it then eventually actually gets "nuked"
- You do a "prune" (gc) to confirm that you want your accident to be unrecoverable.
By default, your local branch (which is what you most likely stand to "reset" by accident) has a reflog => and that saves the old state for 6 weeks. (You can make that longer).
So you have 6 weeks to restore your work, if you indeed made a bad decision and did something that "reset" your branch.
Even if you don't have a reflog, git does not remove the "loose objects" for 2 weeks. So within those 2 weeks you can use "git fsck" to find those objects and restore them (that however is a lot of work... / so better go with the reflog).
And to be clear, if someone isn't going to look at the result of their actions (and not noting something went wrong)... If they don't do that, not even when using a GUI that - if nothing else - does make it easy (easier) to look at a log and associated diffs)... Well, then that person most certainly would not check the result of what they did, if they had used command line.
I had so many headaches already in projects where developers used GUI git tools and nuked branches, reverted changes etc.
And people using the command line do never make mistakes? Well, in my experience they do. When something does not work as they want, they start using "-f" and override stuff. Calling "git reset" is easy enough. Creating a branch with force too. And with "git switch" all it takes is an uppercase -C, that can happen very easily, even by mistake instead of the lowercase -c
And as for any statistical relevance between those errors, and GUI users: Are you sure they show the right cause vs effect relationship.
If (assumed for arguments sake) GUI user make more mistakes, does that mean:
- the GUI leads to mistakes
- people who don't want to spend time to understand are more likely to use GUI
?
Because the latter means, if they did not have a GUI, the still would do minimum investment to understand, and they would make the errors using command line too.
If you want to use git, learn to use git.
Yes, of course. Learning and understanding it is important.
But you can do that with a gui too. You just have to be willing to understand what you actually have the GUI do.
But then on the command line, you have to also be willing to learn.