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.<p><pre><code> $ 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'</code></pre>
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.)<p>I wrote an introduction to Magit a while back. Magit has a very simple and understandable "context menu" interface that gives you access to <i>all</i> of Git's functionality, and then some. In other words, it's not a pared-down environment like a lot of frontends.<p><a href="http://www.masteringemacs.org/articles/2013/12/06/introduction-magit-emacs-mode-git/" rel="nofollow">http://www.masteringemacs.org/articles/2013/12/06/introducti...</a>
I've been using Ryan Tomayko's git-sh [1] for years. It provides very similar functionality and consists of just a handful of Bash scripts.<p>[1] <a href="https://github.com/rtomayko/git-sh" rel="nofollow">https://github.com/rtomayko/git-sh</a>
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.<p>Generally speaking, though, I love git because I don't have to break out from my normal flow to use it.<p>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).<p>[1] <a href="https://gist.github.com/rasschaert/8915657" rel="nofollow">https://gist.github.com/rasschaert/8915657</a><p>[2] <a href="https://github.com/jordansissel/fpm" rel="nofollow">https://github.com/jordansissel/fpm</a>
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.<p>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.<p>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.<p>[1]: <a href="https://github.com/ndbroadbent/scm_breeze" rel="nofollow">https://github.com/ndbroadbent/scm_breeze</a>
Interesting, but if I were the author I would definitely avoid the name "gitsh" since some googling reveals there have been prior arts under exactly the same name: <a href="https://github.com/caglar/gitsh" rel="nofollow">https://github.com/caglar/gitsh</a> <a href="https://gist.github.com/aristus/2304335" rel="nofollow">https://gist.github.com/aristus/2304335</a>
The only thing which I personally found interesting was the empty enter command shows git status.<p>Here is something like that for zsh in case you need it.<p><a href="https://gist.github.com/anonymous/0aa22dc97ef832f88026" rel="nofollow">https://gist.github.com/anonymous/0aa22dc97ef832f88026</a>
<p><pre><code> Of all the Git commands, I find myself using git status most often
</code></pre>
I literally never use status. It's faster to use a shell prompt that displays uncommitted / untracked files.