

GitHub Flow Like a Pro with These 13 Git Aliases - NicoJuicy
http://haacked.com/archive/2014/07/28/github-flow-aliases/

======
jdowner
One alias that I find really useful is,

summary = !git log $(git log -1 --merges --pretty=format:%H)..HEAD --oneline

This prints the log summaries on one line up to the last merge commit. If you
are working on a feature/topic branch (and you collaborators do too), this
will just print out the commits you have add for the feature. I often use this
to go back and rebase fixups or suggestions from a code review.

~~~
contingencies
This is useful, but try...

git log --all --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s
%Cgreen(%cr) %C(bold blue)<%an>%Creset' \--abbrev-commit --date=relative

... you get visual branching and merging, branch names, useful dates, authors,
etc.

~~~
sinatra
I prefer to see some details about the files in each commit:

log --pretty=format:"%C(yellow)%h%Cred%d\\\ %Creset%s%Cblue\\\ [%cn]"
\--decorate --numstat

------
jdowner
I like some of these. 'wip' and 'wipe' are two operations that I regularly
used. However, as I entered them into my .gitconfig I couldn't help noticing
that their similarity is something that would undoubtedly bite me on the arse
at some time.

~~~
flurdy
Due to autocompletion and likelihood of accidentally accepting the wrong one
of either of these I renamed my wipe alias to clean.

    
    
       clean=!git add -A && git commit -m "TMP: Save before clean reset" && git reset HEAD~1 --hard

~~~
flurdy
Note clean is a bad alias though as already a proper git command. I changed my
alias again to ditch... :)

------
kpcyrd
>cm = !git add -A && git commit -m

I think it's a better idea to use git add -p to review your changes before
commiting them.

~~~
jdowner
Alternatively, 'git commit -v' also provides a way to review the changes
before you commit them. If you are not going to 'cherry-pick' the changes for
the commit, this has the added benefit of showing all the whole diff at once.

------
solaris999
I like his idea of having an alias to commit to when he wants to save off
work.

If you combine that with a checkout (co) alias which saves the current branch
and checks the latest commit message of the destination branch and 'reset
HEAD~1 --mixed's when it was 'SAVEPOINT' and functionally you have regular git
that allows you to move around between branches without committing first.

------
gima
Is there really a reason why the common functionality should be this difficult
to achieve? I don't know about you guys, but apart from the very basics, I
always have to refer to a manual to complete yet another awkward command line
flag. In my opinion this is like unnecessary paperwork. Don't get me wrong, I
like git. It's just that it would be nice to see the core team come closer to
the user, by default.

------
flurdy
I frequently get into a messy rebase then I hit the zipline eject button:

eject=!git reset --hard && git checkout master && git rebase --abort

Although I prefer multiple commands to be a bash or as below a fish alias:

    
    
      function giteject
        git reset --hard
        and git checkout master
        and git rebase --abort
      end

~~~
TheHippo
if you name the bash script "git-eject" it would still work the git command
and your should get autocompletion for your command, too.

~~~
flurdy
True, dotfiles aliases fixed! :)

------
meesterdude
this is awesome! thanks for this.

Although when I went to share it in slack, the preview text was "You've been
Haacked and you like it". I personally find that a tasteless slogan; but more-
so it should be the title of the post I linked, not the site title.

I have a few aliases in my .bashrc file that I use:

alias git-branch-list='for k in `git branch|sed s/^..//`;do echo -e `git log
-1 --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" "$k"`\\\t"$k";done|sort'

alias c="git commit -m '"

alias s='git status'

alias a='git add'

I use the first one to hop around branches and see when the branch was last
updated. The others are just because I am super lazy. But reading the post I
am moved to be even lazier!

~~~
NicoJuicy
Well, it's because his name is Phil Haack ... I actually like it :)

You are right though, his title tags on his blog aren't really descriptive...
Which is uncommon for a "reasonable" popular blog (Haack is almost as known as
Hanselman in the .Net world, untill he left Microsoft for Github a couple of
years ago - he's been more quiet since then :-) )

I added an issue for his site here:
[https://github.com/Haacked/haacked.com/issues/178](https://github.com/Haacked/haacked.com/issues/178)
(gotta love developers)

------
nhance
This is a more complicated version of the 2015 Fukuoka Ruby Award winner Git
Reflow:

[http://github.com/reenhanced/gitreflow](http://github.com/reenhanced/gitreflow)

~~~
whitten
Do you think this is a necessary complication to Git Reflow, or think the
aliases created for git workflow are worth the cognitive effort to categorize
them and use them ?

