Alias ​​Git para ramificação realmente rápida

Esta é uma situação que você já deve conhecer:

Você começa a trabalhar em um novo recurso grande e pode alterar alguns arquivos para implementá-lo. Antes de comprometer seu trabalho em um branch de recurso novo ou existente, você percebe que talvez uma ou mais mudanças que você acabou de fazer não estejam realmente isoladas do seu novo recurso, mas talvez outro recurso, uma correção de bug ou outra coisa que realmente não se encaixe em seu novo ramo.

Normalmente, alguém comprometeria as mudanças para o novo recurso e criaria outro branch de recurso começando do seu branch base. Isso pode funcionar bem na maioria das situações, mas às vezes seria muito útil apenas criar um novo branch com uma mudança pequena e isolada antes de fazer um commit grande e limpo em seu branch de recurso real. Dessa forma, você pode facilmente mesclar, selecionar ou

O seguinte alias permite criar instantaneamente um novo branch com o que estiver no índice:

$ git config -e --global

[alias]
nb
= "!sh -c 'git checkout -b $0 && { git commit $@ || { git checkout - && git branch -d $0 && false; }; } && git checkout -'"

Por exemplo:

$ git add some_broken_file.rb
$ git nb fix
-broken-file

Você também pode usar os argumentos usuais para git-commit. O primeiro argumento é sempre o nome do branch que você deseja criar, todos os outros argumentos são passados ​​para git-commit.

$ git nb patch-some-files -p
$ git nb
new-branch -a -m "Create a new branch with all current changes"

Nota :
O alias também falhará normalmente para branches existentes ou quando você decidir abortar seu commit.