4 comandos git avançados dos quais você provavelmente nunca ouviu falar

por Nada Em Troca
4 minutos de leitura
5 comandos git que parecem mágica

Git é um programa enorme, com quase 200 subcomandos e inúmeras opções entre eles. Você provavelmente usa apenas alguns, aqueles confiáveis ​​como init, add, commit e branch. Mas alguns comandos vão muito além do básico e podem melhorar radicalmente sua vida de codificação se você os conhecer.

Use git clean para limpar sua árvore de trabalho

Estamos começando de forma bastante simples, com um comando pragmático que pode ajudá-lo a manter seu repositório limpo. Parece óbvio em retrospectiva, mas você provavelmente já fez isso manualmente antes, então prepare-se para economizar muito tempo com:

git clean 

O comando git clean remove arquivos não rastreados da árvore de trabalho. Portanto, quaisquer arquivos compilados, backups, arquivos .DS_Store Mac ou qualquer outra coisa que não faça parte do seu repositório serão removidos. Por exemplo, este repositório simples possui um arquivo não rastreado:

Uma lista de arquivos na árvore de trabalho de um repositório e seu status git confirmam que um arquivo – hello.o – não é rastreado, enquanto outro – hello – está em .gitignore.

Executar git clean remove esse arquivo, mas deixa outros em paz, incluindo o arquivo hello ignorado pelo git:

Um exemplo de execução do comando git clean mostra que ele remove um único arquivo não rastreado.

Se você estiver familiarizado com o Make, isso é um tanto análogo ao comando make clean.

Por padrão, git clean deixará os diretórios não rastreados em paz, mas você pode usar a opção -d para recorrer a eles. Eu recomendo usar a opção -n para realizar primeiro uma simulação, onde o git mostrará os arquivos que ele teria removido, sem realmente excluí-los. Você também pode usar o -i para o modo interativo, que lhe dará opções mais refinadas para lidar com os arquivos:

O comando git clean executado com a opção -i mostra uma lista de arquivos que ele pode remover, com comandos opcionais para limpar todos, filtrar ou selecionar arquivos individuais, ou manipulá-los um por um.

Empregue git bisect para descobrir qual commit introduziu um bug

O comando bisect ajuda a definir qual commit introduziu um bug ou regressão específico. Sem ele, tal tarefa envolveria a verificação repetida de cada revisão, talvez com algumas suposições fundamentadas sobre qual poderia ser o culpado. Em uma base de código pequena, ou que você tenha uma compreensão completa, isso pode não ser uma provação tão grande. Com projetos colaborativos maiores, isso poderia facilmente consumir muito tempo precioso.

Para ser claro, git bisect está longe de ser mágico. Na verdade, oferece uma solução trivial para o problema: pesquisa binária. A pesquisa binária é uma forma de resolução de problemas do tipo “dividir para conquistar”. No caso do git bisect, envolve um processo simples:

  • Identifique a primeira revisão incorreta, aquela que definitivamente contém o problema. Freqüentemente, esta é a revisão atual (ou HEAD).
  • Identifique a última boa revisão. Isso geralmente é um pouco mais complicado, mas você sempre pode começar muito antes do necessário, mesmo na primeira revisão.
  • Verifique uma revisão no meio desses dois. Se estiver bom, o bug deve ser mais recente; caso contrário, é mais antigo.
  • Continue repetindo 3 até identificar o commit que introduziu o bug.

Este exemplo mostra um repositório com cinco commits e os comandos bisect start, bad e good definindo o escopo:

O comando git bisect start inicia o processo de seleção de um commit específico.

A cada passo, git bisect verifica um novo commit que você pode testar para ver se contém o bug ou não:

Executar um programa para confirmar um bug e, em seguida, verificar uma versão anterior com git bisect na qual o bug foi corrigido.

Depois de esgotadas todas as possibilidades, git bisect relata o primeiro commit incorreto encontrado de acordo com suas escolhas iniciais. Agora você pode correr git redefinição da bissecção para finalizar o processo e resolver o commit incorreto de acordo.

Quando git bisect percebe que encontrou a origem de um bug, ele mostra detalhes do commit, incluindo a mensagem do commit e um resumo das alterações do arquivo.

Isso ainda pode parecer um processo trabalhoso, mas isso é uma solução para você. É muito melhor do que pular para revisões aleatoriamente, tentando diminuir o problema. git bisect realmente acelera a tarefa, protegendo você de inspecionar logs git e verificar commits individuais.

Descubra o git cherry-pick e mescle menos que um branch

Normalmente, quando você combina o trabalho de dois ramos distintos, é uma operação de tudo ou nada. O comando git merge cria um novo commit com cada commit de outro branch aplicado ao atual. Isso faz muito sentido para muitos fluxos de trabalho, mas às vezes você quer ser um pouco mais matizado.

O comando cherry-pick permite escolher um commit específico e aplicar suas alterações ao seu branch atual, como um novo commit. Normalmente, você executará o cherry-pick em um commit de um branch diferente, então é uma ótima maneira de obter uma alteração singular de um branch de recurso muito maior, por exemplo.

Por padrão, o cherry-pick reutilizará a mensagem de commit, tornando esta uma operação muito rápida. Se desejar, você pode editar a nova mensagem de commit usando git cherry-pick -e commit-id.

Se o commit não for aplicado corretamente, o cherry-pick seguirá um procedimento semelhante ao git merge e solicitará que você resolva os conflitos manualmente.

Tente git revert para desfazer commits indesejados

Você já se arrependeu de ter feito um commit após o evento? Se você fizer isso e perceber isso em breve, git reset pode ajudar. Mas para commits isolados, ou se você não quiser destruir parte do histórico do seu repositório, git revert é a ferramenta que você deve usar.

Use git revert em um commit específico e você efetivamente removerá esse único commit. O repositório terminará exatamente como seria se o commit nunca tivesse ocorrido. Todas as suas mudanças desaparecerão.

Execute como:

git revert  

Em resposta, o Git criará um novo commit que é o oposto de desfazendo as alterações originais. Ele também solicitará que você edite a mensagem do novo commit, preenchendo-a previamente com uma nota de que reverte o commit específico.

Tal como acontece com o cherry-pick, se a sua reversão criar conflitos, você será solicitado a resolvê-los manualmente antes de executar git reverter –continuar para confirmar.

Este artigo foi útil?
Gostei0Não Gostei0

Deixe um comentário

Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00