3 ms·
Maybe if its default CLI wasn't a total piece of horse shit. Seriously... some commands (like reset and show) do wildly different things based on a single flag
by colanderman 12y ago
Maybe if its default CLI wasn't a total piece of horse shit.
Seriously... some commands (like reset and show) do wildly different things based on a single flag or whether they're given an argument or not; the interpretation of arguments is by default context-sensitive (files vs. branch names); the "simple" way to do some things (revert local changes) is via a seemingly unrelated command (checkout); informational commands tend to show no useful info by default; etc.
The infuriating thing is that git's internal model is very simple. It's often easier to resort to working with the files under .git/ directly than figuring out what incantation I need to do simple thing X.
The only redeeming quality of the CLI is the existence of git rebase --interactive. It's one of the few commands that directly maps a user goal (editing the DAG) to a simple action (moving lines in a text file).
(Yes, I know there probably are replacement CLIs. That doesn't help when I need to help co-workers do something.)
Darcs is an example of a great DVCS CLI. Its commands each do exactly one thing; are well-named; only need options for the uncommon cases; and there's exactly one command for each basic operation on the repository.