This is a repost promoting content originally published elsewhere. See more things Dan's
reposted.
…
I also ask not to discard all this nonsense right away, but at least give it a fair round of thought. My recommendations, if applied in their entirety, can radically change Git
experience. They can move Git from advanced, hacky league to the mainstream and enable adoption of VCS by very wide groups of people. While this is still a concept and obviosly
requires a hell of a job to become reality, my hope is that somebody working on a Git interface can borrow from these ideas and we all will get better Git client someday.
I love Git. But I love it more conceptually than I do practically. Everything about its technical design is elegant and clever. But most of how you have to act when
you’re using it just screams “I was developed by lots of engineers and by exactly zero UX developers.” I can’t imagine why.
Nikita proposes ways in which it can be “fixed” while retaining 100% backwards-compatibility, and that’s bloody awesome. I hope the Git core team are paying attention, because these
ideas are gold.
This is a repost promoting content originally published elsewhere. See more things Dan's reposted.
This is a repost promoting content originally published elsewhere. See more things Dan's
reposted.
Ever found you’ve accidentally entered too many git
s in your terminal and wondered if there’s a solution to it? I quite often type git
then go away and come
back, then type a full git status
after it. This leads to a lovely (annoying) error out the box:
$ git git status
git: 'git' is not a git command. See 'git --help'.
What a git.
My initial thought was overriding the git
binary in my $PATH
and having it strip any leading arguments that match git
, so we end up running just
the git status
at the end of the arguments. An easier way is to just use git-config
‘s alias.*
functionality to expand the first argument being git
to a shell command.
git config --global alias.git '!exec git'
Which adds the following git config to your .gitconfig
file
And then you’ll find you can git git
to your heart’s content
$ git sha
cc9c642663c0b63fba3964297c13ce9b61209313
$ git git sha
cc9c642663c0b63fba3964297c13ce9b61209313
$ git git git git git git git git git git git git git git git git git git git git git git git git git git sha
cc9c642663c0b63fba3964297c13ce9b61209313
(git sha
is an alias for git rev-parse HEAD
.)
See what other git alias’ I have in my ~/.gitconfig
, and laugh at all the typo corrections I
have in there. (Yes, git provides autocorrection if you enable it, but I’m used to these typos working!)
Now git
back to doing useful things!