Você sabe quando usar o cherry-pick ou am/apply?

Algumas vezes eu ficava confuso em qual comando usar. Se você se confunde, aí vai a dica:

Uma utilização para esses comandos é quando você desejar fazer o rebase/merge entre branches que estão em árvores diferentes, ou seja, vamos imaginar que você tem um branch, chamado A, que foi criado à partir do branch Release0615, e tem outro branch, chamado B, que foi criado à partir do branch Release0630.

O seu branch A atrasou e suas alterações não entrarão mais na release 0615 (release do dia 15/06/2009), então você deve fazer o seu rebase/merge com o release 0630. Mas eles estão em árvores diferentes, com isso você pode ter uma série, digo novamente, uma série de problemas. Uma solução é levar apenas as suas modificações feitas no branch A para o branch B, removendo com isso os conflitos de arquivos que você sequer mexeu!

Agora, qual comando usar ‘git cherry-pick’ ou ‘git format-patch’ seguido de ‘git am -3′ ou ‘git apply’?

Se o branch estiver em ambiente local utilize ‘git cherry-pick’. Ele tentará fazer um auto-merge para você e se não existir conflito tudo estará pronto. Agora, por outro lado, se os commits não estiver no ambiente local, ou se alguém lhe enviou os arquivos .patch por email, você deve usar o comando ‘git am -3′ ou ‘git apply’. Prefira utilizar ‘git am -3′, pois com ele o git já vai saber que são commits de outra árvore e fará de tudo para não ter problema no merge.