Do we really need a shell for this? If you're reusing some of these so often, why not just alias them in your bashrc? The interactive shell requires way more key-presses than any of my aliases not to mention sticking me into a shell that I need to exit out of later to get back to my development environment.
$ cat ~/.bashrc | grep git
alias gitc='git commit -a -s'
alias gitls='git log --pretty=oneline'
alias gitb='git branch'
alias gitca='git commit -a --amend'
alias gits='git status'
$ cat ~/.alias
alias g='git'
$ cat ~/.gitconfig
[alias]
st = status
br = branch
co = checkout
I don't see anyone else doing g='git' but I don't have to write out an alias for each command. For less frequently used git commands I forget an [alias] shortcut but I can always use the 'g' shortcut.
$ cat ~/.bash_profile | grep git
alias gco="git checkout"
alias gpu="git pull"
alias gcom="git commit"
alias gfr="git fetch && git rebase -i"
alias g="git"
it actually looked nice imho before i realized it's one helluva slow ruby app(sorry, i like ruby, and considering i'm on a haswell laptop, i think i deserve to have my shell commands execute instantly).
unlike the hub command by github(doing different things) the gem dependencies/parsley are not trivial to combine into a single standalone version, so if i chose to use this i would have to install this weird structure of a ruby gem that is distributed as some kind of app that installs itself into usr/lib(most probably because rubygems would make the startup time even slower).
apparently there's also this https://github.com/rtomayko/git-sh which is just bash. but yeah i think i'll just stick with my aliases and tig.
EDIT: i don't know how i saw a /usr/bin/ruby shebang, but forget that part of the rant
Even if you're not an Emacs user I recommend you try out Magit inside Emacs. (And if you do use Emacs, you should definitely use it.)
I wrote an introduction to Magit a while back. Magit has a very simple and understandable "context menu" interface that gives you access to all of Git's functionality, and then some. In other words, it's not a pared-down environment like a lot of frontends.
I use magit a lot. It is good, but it would be nice if magit-status, and log, were faster. I think it does unnecessary things by default. Is there a way to fold all diffs in a buffer?
This is definitely interesting, and I might check it out for the couple of times a week that I have to do complicated stages of commits or rebasing.
Generally speaking, though, I love git because I don't have to break out from my normal flow to use it.
My use case is potentially very different since most of my projects under version control are personal / single_committer, but I've saved myself some of the typing by aliasing common git commands to short codes: 'git add' becomes 'ga', 'git commit' == 'gc', 'git push' == 'gp'. That way, committing/pushing a bug I've just fixed becomes `gc -am '$message' && gp`.
I prefer native system packages to tarballs, so here's a script [1] to generate .deb and .rpm packages using Jordan Sissel's FPM [2] (gem install fpm).
What would also be neat: a "generate a shell on demand" command. So `use git` would give you something that's about 90% of gitsh, but equally `use apt-get` would do the same thing for apt and so on.
But perhaps we're getting a little bit carried away here, for a couple of keystrokes :-)
It looks nice with the syntax coloring, and it's obvious a good amount of work went into it, but I personally don't see a clear benefit to altering my workflow to save what appears to literally be a couple of characters over a transaction.
What might be interesting is being able to import and export configurations to standardize git usage across multi-coder projects?
Another similar project (which I use) is scm breeze, which sets up tons of useful aliases for various git commands. It gives you much cleaner git status and log outputs, which allows you do things like `ga 1 3 5` to add files numbered 1,3,5 to the index without typing in file names.
We were trying to avoid depending on RVM Rubies, because they get moved and deleted a lot, and that shouldn't stop our dev tools from working.
If you're on OS X, and installed via Homebrew, then the installer should have detected that system Ruby was too old and installed Ruby 2.0 from Homebrew for you.
If you're not on OS X, you'll need to either install Ruby 2.0 or later before installing gitsh, or if you want to work around our RVM avoidance, you can force the installer to use your current RVM Ruby: `RUBY=$(which ruby) ./configure`