9+ comandos git para salvar seu emprego

9+ comandos git para salvar seu emprego

Se você já trabalhou em um grande projeto com muitos colaboradores, obviamente estava usando o Git como sistema de controle. E quando você está trabalhando com algo tão complexo como o Git, todos cometemos erros. Neste artigo, vou discutir alguns erros muito comuns que os programadores cometem ao usar o Git e como resolvê-los.

 

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
Tem algumas dicas Git de sua preferência? Deixe-nos saber nos comentários abaixo, eu adoraria ouvi-los.