A maioria de nós que usa o git provavelmente só usa o GitHub, daí a popularidade do serviço. No entanto, se o senhor (ou um projeto principal) não usar um serviço como o GitHub, precisará exportar patches para revisão. Vamos dar uma olhada em como exportar um patch com o git!


Exportando um patch


Digamos que o senhor tenha criado uma ramificação de recurso para o seu conjunto de alterações iminente, feito alterações e confirmado essas alterações. Agora é hora de exportar seus commits para um arquivo de patch – o senhor executaria o seguinte:



git format-patch master --stdout > my-patch-file.patch


O comando acima gera seus commits em um arquivo .patch . Esse arquivo de patch pode ser importado para outros repositórios para teste, aplicação, etc. Alguns repositórios exigem a saída mais detalhada do patch. O senhor pode fornecer isso com:



git format-patch master --full-index --stdout > my-patch-file.patch


Da documentação do git, --full-index significa: Em vez do primeiro punhado de caracteres, mostre os nomes completos dos objetos de blob pré e pós-imagem na linha “index” ao gerar a saída do formato de patch.


Importação de um patch


Se o senhor receber um arquivo de patch, deve fazer algumas verificações antes de tentar mesclá-lo!


Assegurar a relevância do patch


O senhor pode garantir que o patch se aplique ao conjunto de trabalho atual:



# See if patch is applicable
git apply --check my-patch-file.patch

# Ensure patch applies to current index
git apply --index my-patch-file.patch


Exibir informações de diferenças de patches


Se quiser saber quais arquivos foram alterados, adicionados ou removidos, o senhor pode usar o seguinte comando:



# See which files have been changed
git apply --stat my-patch-file.patch


Mesclar o código


Quando estiver satisfeito com o código do patch e quiser mesclar e testar (o teste deve ser feito em uma ramificação de recurso), o senhor pode executar:



# Signs the patch by merger for history
git am --signoff my-patch-file.patch


Bem-vindo a algumas das operações que o GitHub (e serviços semelhantes) faz para nós em segundo plano. Eu adoro fazer coisas do linha de comando mas prefiro usar um front-end elegante para esse tipo de coisa. No entanto, caso o senhor esteja preso sem uma interface de usuário, mantenha esses comandos à mão!