Buscar

Git e alguns comandos que podem ser úteis

Neste artigo o dataholic William Penna aborda sobre suas experiências com o sistema GIT, o que vai esclarecer algumas questões para os iniciantes. Confira!



Eu costumo dizer que GIT é uma ferramenta extremamente importante na vida de um desenvolvedor. Ela pode salvar o nosso dia de trabalho, como também pode deixar ele um pouco complicado. Por isso, a ideia é listar aqui algumas situações que acontecem no dia a dia de trabalho quando se começa a trabalhar em uma empresa, tendo uma equipe, um time trabalhando junto.


Mas afinal, o que é GIT?


É um sistema de controle de versão distribuído, usado muito no mundo do desenvolvimento de software, mas também pode ser usado para registrar o histórico de edições de qualquer tipo de arquivo. Ou seja, se quiser escrever um artigo como esse, e quiser versioná-lo, salvando cada versão que é criada, é possível fazê-lo perfeitamente.


Quando o desenvolvedor começa a usar o GIT no dia a dia de desenvolvimento, logo se aprende os seguintes comandos:


  • git init ⇒ cria um repositório GIT vazio ou reinicializa um existente;

  • git add . ⇒ adiciona o conteúdo novo dos arquivos no índice;

  • git commit -m "Mensagem detalhando o que eu acabei de fazer no meu código" ⇒ salva as alterações no repositório;

  • git push ou git push —set-upstream nome_da_branch (quando a branch ainda não está na nuvem) ⇒ altera a referência remota com os objetos/arquivos associados localmente;

  • git clone ⇒ faz o download um repositório para o meu diretório local;

  • git pull ⇒ traz as referências remotas e integra com outro repositório ou com uma ramificação local;

Basicamente quando iniciamos, aprendemos esses comandos e começamos a criar o nosso portfólio de desenvolvimento, normalmente no famoso Github, o mais popular atualmente.


Configurações

Antes de mais nada, o ideal é realizar a configuração global do seu usuário na máquina ao qual está trabalhando:


  • git config --global user.name "Nome do usuário" ⇒ configuração do nome do usuário que vai aparecer nos seus commits.

  • git config --global user.email "E-mail do usuário" ⇒ configuração do e-mail do usuário que vai aparecer quando alguém verificar quem fez determinados commits.

Outro cenário que ocorre normalmente quando começamos a desenvolver algo, é criar um repositório localmente, desenvolver e depois criar um repositório remoto. Sendo assim precisamos adicionar o endereço do repositório remoto localmente, usando o comando git remote add origin "https://github.com:usuario/repositorio.ssh


Caso você queira alterar o nome do repositório, a URL será alterada. Sendo assim, é necessário alterar a URL do repositório local com o comando git remote ser-url origin "https://github.com:usuario/repositorio2.ssh".


Quando começamos a trabalhar em equipe, é nesse momento que percebemos que o GIT pode ser usado para muito mais do que simplesmente montar o nosso portfólio no Github.


Quando nós vamos desenvolver a nossa primeira feature, nós percebemos que não podemos usar a branch master ou main para desenvolver o trabalho. É então que nós conhecemos o git checkout -b, responsável por criar uma nova ramificação/branch a partir da branch atual. Mas ATENÇÃO, ela faz isso sobre a sua branch local, e ela pode não estar atualizada com algo que outro desenvolvedor possa ter desenvolvido. Ou seja, utilize o git pull primeiro, atualize a branch local com a remota, e só então crie a nova branch para iniciar o seu desenvolvimento.


Vamos supor que você iniciou o desenvolvimento no começo do seu dia, chegou no horário do seu almoço e você quer verificar o que você fez até aquele momento. Um comando interessante para utilizar é o git diff. Ele vai te mostrar no terminal aquilo que você incluiu, alterou ou excluiu no seu código. Ah, mas hoje existem ferramentas muito melhores que nos mostram de uma forma muito mais visual essas mudanças. Exato, é esse comando que está sendo utilizado por trás, usufrua dele seja através de uma ferramenta ou através do próprio terminal.


Reversões e reutilizações


Caso eu não queira fazer o commit porque ainda não terminei o que quero fazer, ou surgiu outra coisa para desenvolver, eu posso usar o comando git stash para salvar as minhas mudanças em um arquivo de trabalho por um período podendo trabalhar em outra coisa. E depois retornar ao desenvolvimento do que foi salvo. Para retornar ao trabalho salvo, eu utilizo o git stash pop, esse comando pode ser usado em qualquer branch.


Você salvou o que você fez, subiu para o remoto e foi almoçar. Almoçando, você teve uma ideia de realizar a implementação da parte da manhã de uma forma diferente. Quando você volta, você tem duas opções, já que o que você fez está salvo e versionado:


Opção 1: você começa a realizar as alterações a partir do lugar onde você parou, porque você já tem o commit que você realizou o trabalho na parte da manhã. Indo por essa opção, você vai realizar as mudanças necessárias e vai fazer o teste com essa nova implementação. Vamos supor que você fez essa implementação, porém não deu certo. Agora você quer voltar ao commit que você realizou antes de ir almoçar. Você tem algumas opções:


  • git reset é uma delas, onde você retorna ao commit de antes do almoço. E dentro desse comando, existem 3 opções:

1. git reset --hard "número do commit" ⇒ Desfaz commits, stage e modificações. CUIDADO: Perdem as informações e elas não podem ser recuperadas.

2. git reset --mixed "número do commit" ⇒ Desfaz commits e stages, mantém as modificações.

3. git reset --soft "número do commit" ⇒ Desfaz commits, mantém stage e modificações.


  • git revert é a outra opção, onde você mantém os commits que deseja desfazer e cria um novo commit que inverte o commit desejado. CUIDADO, se você for precisar retornar as modificações que estão sendo revertidas, se isso for acontecer, dependendo do caso é melhor realizar o revert do revert.

Para visualizar os commits para realizar um dos comandos acima, nós utilizamos o git log , que vai nos mostrar todo o histórico de commits da branch em que estamos.


Opção 2: você pode retornar a branch pai, criar outra branch a partir dela com o comando git checkout -b nome_outra_branch e realiza o teste que você pensou no horário de almoço. Caso o teste não tenha dado certo e você não queria mais utilizar essa branch, você pode excluí-la localmente: git branch -D "nome_branch" e remotamente: git push origin --delete "nome_branch".


Git merge


Após desenvolver uma feature, nós precisamos mesclar o que foi feito com a branch ambiente. Para isso, usamos o comando git merge . Dentro desse comando, existem 3 formas de realizá-lo:

1. git merge: mescla rapidamente sem criar um novo commit.

2. git merge --no-ff: mescla e gera um novo commit ao realizá-lo.

3. git merge —squash: mescla e adiciona tudo em um único commit.


Outra alternativa ao git merge é o git rebase. Porém, muito cuidado. O git rebase não garante o histórico de commits da forma original. Ele pode alterar a ordem com que os commits foram realizados. Dependendo do projeto, isso pode ser ruim e perigoso, principalmente para projetos em equipe ou projetos públicos.


Essas são algumas dicas de alguém que vem utilizando o GIT há algum tempo. A ideia é ajudar e mostrar alguns cenários para ajudar. Existem inúmeros outros comandos do GIT que podem ser utilizados e úteis, mas acredito que esses já podem ajudar muito na carreira dos desenvolvedores.


Gostou desse conteúdo? Curta, comente e compartilhe. 💚