Descobrindo o que mudou em um arquivo

Manter o controle das coisas pode ser difícil - especialmente se muitas pessoas trabalharem na mesma base de código.

Para ajudá-lo a entender exatamente como (assim como quando e por quem) um arquivo foi alterado, você pode usar o bom e velho git log comando - mas com um pouco de tempero:

$ git log --since="3 weeks" -p index.html

Usar “-p” garante que você veja as mudanças reais como diffs (e não apenas os metadados do commit). E a opção “–since” ajuda você a se concentrar em um período de tempo recente.

Desfazendo seu último compromisso com estilo

Às vezes pensamos que um monte de alterações estão prontas para serem confirmadas – mas logo após fazer a confirmação, percebemos que fomos muito rápidos.

Mudanças podem estar faltando, podemos ter atingido o ramo errado ou uma infinidade de outros problemas podem ter acontecido …

A única coisa que é certa: nós gostaríamos de desfazer este último commit e colocar nossas mudanças de volta em nossa Cópia de Trabalho!

Podemos usar o git reset comando com um conjunto especial de opções:

$ git reset --mixed HEAD~1

A opção “–mixed” garante que as alterações contidas nos commits que estão sendo redefinidos NÃO sejam descartadas. Em vez disso, eles são preservados como alterações locais na Cópia de Trabalho.

Usar a notação “HEAD ~ 1” é um ótimo atalho para especificar “o commit antes do último” – que é exatamente o que queremos para desfazer o último commit.

Sinta-se à vontade para ler mais sobre este tópico em como desfazer o último commit.

Descobrindo como um arquivo é diferente em outro ramo

Depois de fazer algumas alterações em um arquivo em uma ramificação de recurso, você pode querer compará-lo com sua aparência em outra ramificação. Para dar um exemplo concreto, digamos …

  • você está atualmente no ramo “recurso / login” e …
  • quero entender como o arquivo “myFile.txt” aqui …
  • é diferente de sua versão no ramo “desenvolver”.

o git diff comando pode fazer isso se você fornecer os seguintes parâmetros:

$ git diff develop -- myFile.txt

Você verá então uma comparação clara e agradável que mostra exatamente como seu arquivo difere de sua versão no outro branch.

Usando “switch” em vez de “checkout”

o git checkout comando tem uma infinidade de trabalhos e significados diferentes. É por isso que, recentemente, a comunidade Git decidiu publicar um novo comando: git switch. Como o nome indica, foi feito especificamente para a tarefa de alternar ramos:

$ git switch develop

Como você pode ver, seu uso é muito direto e semelhante ao “git checkout”. Mas a grande vantagem sobre o comando “checkout” é que “switch” NÃO tem um milhão de outros significados e recursos.

Como é um novo membro da família de comandos Git, você deve verificar se sua instalação Git já o inclui.

Alternar para trás e para frente entre dois ramos

Em alguns cenários, pode ser necessário alternar entre duas ramificações repetidamente. Em vez de sempre escrever os nomes dos ramos completos, você pode simplesmente usar o seguinte atalho:

$ git switch -

Usando o caractere de traço como seu único parâmetro, o comando “git switch” verificará o anteriormente ramo ativo. Como disse, isso pode ser muito útil se você tiver que ir e voltar entre dois ramos várias vezes.

Usando “git restore” para desfazer alterações locais

Até recentemente, você tinha que usar alguma forma de git checkout ou git reset quando você queria desfazer as alterações locais.

Mas com o (relativamente novo) git restore comando, agora temos um comando que foi feito exatamente para este propósito. Isso o diferencia de “checkout” e “reset”, porque esses comandos têm muitos outros casos de uso.

Aqui está uma rápida visão geral das coisas mais importantes que você pode fazer com “git restore”:

# Unstaging a file, but leaving its actual changes untouched$ git restore --staged myFile.txt# Discarding your local changes in a certain file$ git restore myFile.txt# Undoing all of the local changes in the working copy (be careful)$ git restore .

Restaurando uma versão histórica de um arquivo

o git restore comando oferece outra opção muito útil chamada “–source”. Com a ajuda desta opção, você pode restaurar facilmente qualquer versão anterior de um arquivo específico:

$ git restore --source 6bcf266b index.html

Você simplesmente menciona o hash de revisão da versão que deseja restaurar (e o nome do arquivo, é claro).

Se precisar de ajuda encontrando a revisão certa, você pode usar um cliente Git de desktop como Tower: com um recurso como o “Histórico de arquivos”, você pode facilmente inspecionar apenas as alterações que aconteceram em um determinado arquivo – e então selecionar uma revisão para restaurar.

Descubra o poder do Git

Embora o Git seja tão conhecido atualmente, muito de seu poder ainda é desconhecido pelo público. É verdade que você pode “sobreviver” com apenas alguns comandos como commit, push e pull. Mas isso é como dirigir uma Ferrari apenas na primeira marcha!

Se você estiver disposto a mergulhar um pouco mais fundo, descobrirá alguns dos recursos mais poderosos do Git. E isso tem o potencial de não apenas torná-lo mais produtivo, mas também – no final das contas – um desenvolvedor melhor!

Se você quiser aprender mais sobre o Git, recomendo que você dê uma olhada no seguinte livre Recursos:

Sobre o autor

Tobias Günther é o CEO da Torre, o popular cliente de desktop Git que ajuda mais de 100.000 desenvolvedores em todo o mundo a serem mais produtivos com o Git.