Cursos Magento

9+ comandos git para salvar seu emprego

Atualizado em 24 de agosto de 2022

Em praticamente todos os cursos Magento que faço, menciono a importância de se usar um controle de versão. E git é provavelmente a melhor escolha.

Não apenas para organizar o desenvolvimento, mas também porque eventualmente cometemos erros, alteramos um arquivo acidentalmente, e sem um controle de versão, nunca saberemos o que pode ter dado errado.

Em outros casos, a modificação de um arquivo pode ter se dado por conta de uma falha de segurança. Sem um controle de versão, fica muito mais difícil identificar onde um código malicioso foi inserido, ou quais arquivos foram afetados.

Ok, você já é adulto…

Já estamos alinhados sobre a importância do controle de versão e provavelmente você está aqui porque já usa git, certo?

No entanto, é muito comum que cometamos erros no dia a dia ao usá-lo. Por exemplo ao esquecer de adicionar um arquivo a um commit, ou criamos um branch com nome errado, entre outros erros que nos atrapalham na pior hora possível.

Veja alguns erros comuns e como contorná-los.

Alterar última mensagem de um commit

git commit --amend

É bem comum errarmos ou esquecermos de algo na última mensagem de um commit rápido. Com o comando acima, o git abrirá o editor configurado para editar a última mensagem do seu último commit.

Alterar nome do Branch

git branch -m nome-antigo nome-novo

Isso nos permite renomear um branch localmente. Muito útil quando digitamos o nome errado ou fora do padrão que deveríamos.

No entanto, se você já subiu este branch para o repositório, terá que remover o antigo e então subir o novo, após ter renomeado com o comando acima.

Para isso faça

git push origin --delete nome-antigo
git push origin nome-novo

Comitei no branch master sem querer.

Se você for rápido seu chefe nem terá tempo de preparar a carta de demissão. 🙂

Erros como este acontecem. Você estava desenvolvendo algo novo e comitou tudo no master sem querer. Faz parte.

Tudo que precisamos fazer é criar o branch certo a partir do master que está com nossas alterações; resetar o master para 1 commit anterior; e fazer checkout do branch certo para continuarmos trabalhando. E isso é feito com estes 3 comandos respectivamente:

git branch feature-branch
git reset HEAD~ --hard
git checkout feature-branch

Note que se você ainda tinha alguma coisa não salva antes do reset, você deve salvá-los (com git stash save por exemplo).

Adicionando um arquivo no último commit

Na pressa você pode acabar esquecendo um arquivo no seu último commit. Ao invés de criar mais um commit com a mensagem “arquivos que esqueci”, você pode usar o --amend novamente.

Adicione ou remova os arquivos esquecidos e use o –amend novamente.

git add arquivo-esquecido.css
git commit --amend

Significado ℹ️
amend ﹒emendar, corrigir, refinar, fazer pequena mudança (em um texto) a fim de tornar mais justo, preciso, ou atualizado

Opcionalmente você poderá editar a mensagem do último commit a fim de mencionar alguma coisa que esqueceu, ou simplesmente manter a mensagem anterior.

Removendo arquivo adicionado acidentalmente

Ui, de novo?! Calma, não precisa atualizar seu LinkedIn em busca de outro emprego. Ainda dá tempo de corrigir.

Vamos supor que você tenha o arquivo senhas.txt por aí e acidentalmente fez um git add senhas.txt, mas ainda não comitou. Neste caso você pode rapidamente desfazer isso com um git reset senhas.txt.

Agora se você acabou de fazer commit deste arquivo também, precisará ir um pouco além:

git reset --soft HEAD~1
git reset senhas.txt

O primeiro comando te levará ao momento que adicionou os arquivos com git add. O segundo comando removerá o arquivo da lista de arquivos que serão comitados.

Em seguida você fará o commit novamente somente com os arquivos corretos.

E caso você tenha subido estas alterações no repositório remoto, recomendaria que fizesse um git push origin -f nome-do-branch após o procedimento acima. Isso faria uma mudança forçada fazendo com que o branch em questão ficasse exatamente igual ao seu que não contém mais o arquivo comitado acidentalmente e nenhum outro commit futuro.

Isso também é válido quando comitamos arquivos muito grandes no repositório sem querer e queremos removê-lo, reduzindo o tamanho do repositório.

Note que aqueles que já baixaram o seu commit sempre terão acesso à ele e aos arquivos adicionados lá. No caso de arquivos grandes, os repositórios (pasta .git) daqueles que já baixaram aquele arquivo permanecerão grandes, a menos que façam git clone novamente.

Ferrei tudo. Tem jeito?

O git mantém histórico de tudo que fazemos no nosso ambiente local desde o momento que clonamos o repositório ou iniciamos um. Duvida?!

git reflog

O comando acima exibirá todo nosso histórico, como podemos ver abaixo. Note que a última linha mostra o momento que clonei meu repositório de testes, apenas para fazer este tutorial.

Note que a primeira coluna (em amarelo, no meu caso) mostra o identificador único daquele momento, chamado index. Para voltar a qualquer momento no tempo, podemos digitar o comando abaixo, substituindo o {index} por um destes valores. Ex: git reset HEAD@{d937c72}

git reset HEAD@{index}

Note que: inclusive quando usamos o reset acima, isto também fica registrado, e podemos voltar ao momento anterior da mesma forma.

Voltando no tempo (literalmente)

Você pode usar o reset acima da mesma forma para voltar no tempo.

Vamos supor que você realmente acordou com o pé esquerdo e gostaria de desfazer tudo que fez hoje. Neste caso você pode usar:

git reset HEAD@{1.day.ago}

Isso te levará para o dia anterior. Outras variações podem ser usadas. Veja alguns exemplos:

  • 1.minute.ago (um minuto atrás)
  • 1.hour.ago (uma hora atrás)
  • 1.day.ago (ontem)
  • yesterday (ontem)
  • 1.week.ago (semana passada)
  • 1.month.ago (mês passado)
  • 1.year.ago (ano passado)
  • 2011-05-17.09:00:00

E também podem ser usados em conjunto. Ex: 1.day.2.hours.ago

E também no plural. Ex: 5.minutes.ago

Gostou?

Este artigo foi inspirado neste outro artigo (em Inglês) de Ankur Biswas.

Se você está inscrito em algum curso de desenvolvimento Magento pelo Magenteiro, provavelmente recebeu um voucher para usar o PhpStorm ou outra ferramenta da JetBrains. Eles possuem um suporte nativo à git e outros sistemas de controle de versão que me surpreendem a cada dia, e que vale muito a pena explorar. Eles facilitam muito nossas vidas, mesmo quando não usamos nenhum controle de versão – pois possuem um histórico de modificações interno próprio.

Por fim, se você lembra de alguma coisa que eu não mencionei aqui, não hesite em comentar abaixo. Ficarei feliz em atualizar o artigo com sua sugestão.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/para-magenteiros/comandos-git-uteis/"]