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
, mas ainda não comitou. Neste caso você pode rapidamente desfazer isso com um git add senhas.txt
.
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
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.
git push origin -f nome-do-branch
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.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/para-magenteiros/comandos-git-uteis/"]