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!