Git Tutorial



O que é o Git

Antes de explicarmos efetivamente como usar o nosso querido git, vamos a uma breve explicação do que é esse sistema:


Linus Torvalds Logo do Git

Linus Torvalds - O Pai do Git

Logo do sistema de controle de versões Git


Principais Comandos


  • Configurações iniciais

Antes de começarmos a utilizar o sistema de controle de versões Git, é essencial fazer algumas Configurações iniciais.

1 - git config
O comando git config é utilizado no sistema de controle de versões para configurar opções específicas do usuário, repositório ou sistema. É importante que o seu nome de usuário e e-mail estejam configurados de forma correta a fim de facilitar a comunicação durante a realização de um projeto no Git.
Exemplo:
Exemplo Git Config
*Além da configuração padrão do username e e-mail, é boa prática trocar o nome da branch padrão de master para main, visto que é a norma utilizada atualmente.

É importante ressaltar que o comando git config pode ser usado para fazer configurações específicas a um repositório, ou para o âmbito global da sua máquina. A opção --global é o que faz a configuração escolhida atuar para todos os repositórios, sem ele, as mudanças são locais.Também vale lembrar as diversas funcionalidade do comando, podendo ser usado para listar as configurações atuais com --list, pode ser usado também com --get, afim de emitir algum desses tópicos individualmente, dentre outras funções que você pode conferir com a execução do próximo comando da nossa lista.


  • Criando seu Primeiro Repositório Git

1 - git init
Este comando cria um repositório vazio na pasta em que foi executado, onde o Git começa a acompanhar todas as mudanças que você faz nos arquivos dentro dessa pasta, permitindo que você controle o histórico das alterações,volte para versões anteriores e trabalhe de forma colaborativa com outras pessoas.
Exemplo:
Exemplo do comando git init
2- git status
Este comando tem a função de mostrar o estado atual do repositório Git, exibindo informações sobre arquivos modificados, novos arquivos, arquivos prontos para serem adicionados ao próximo commit e outras informações relevantes para o controle de versão.
Exemplo:
Exemplo do comando git status
Observação:

Note que, mesmo após a inicialização do repositório Git, o arquivo que criamos ainda não está sendo monitorado pelo sistema de controle de versões.

3 - git add
Este comando tem a função de adicionar arquivos ao sistema de controle de versões, após adicionados, o Git irá monitorar todas as mudanças ocorridas desde o último commit realizado, também é utilizado para "programar" mudanças nos arquivos antes de adicioná-los ao repositório remoto com mais um commit.
Exemplo:
Exemplo do comando git add
É importante ressaltar que esse comando pode ser aplicado de diferentes formas, como:
1- git add arq1.txt arq2.txt  - Adicionando somente os arquivos desejados ao sistema de controle de versões.
2- git add *.txt  - Que adiciona todos os arquivos do tipo selecionado.
3- git add .  - Esse comando adiciona todos os arquivos existentes na pasta ao sistema de controle de versões.
4 - git rm
O comando git rm remove os arquivos selecionados, parando o rastreamento pelo Git e excluindo-os da pasta local. Ao contrário do git add, que adiciona arquivos ao repositório, o git rm os marca para remoção no próximo commit. É importante lembrar que o git rm não remove arquivos do histórico de commits. Se deseja remover um arquivo completamente do histórico, utilize o comando git reset.
Exemplo:
Exemplo Git rm
5 - git commit
Este comando tem a função de salvar o estado atual dos seus arquivos no repositório git. É comum e boa prática executar o comando git commit -m "mensagem" a fim de explicar paraos outros desenvolvedores de seu projeto a mudança que foi feita no arquivo.
Exemplo:
Exemplo do comando git commit

Note que agora o estado atual do repositório Git foi salvo, podendo ser restaurado a qualquer momento.


  • Controle de Repositório / Repositório Remoto

1 - git remote
Com esse comando, você pode associar seu repositório local Git a um repositório na nuvem do Github. É importante destacar que "git remote" tem inúmeras funções e usos no cotidiano de um programador, podendo ser usado como:
  • git remote -v: Exibe os nomes e URLs de todos os repositórios remotos configurados.
  • git remote add origin <url> Adiciona um novo repositório remoto chamado 'origin' com o URL especificado.
  • git remote rename origin upstream: Renomeia o repositório remoto 'origin' para 'upstream'.
  • git remote remove origin: Remove o repositório remoto chamado 'origin' do seu projeto Git.
* Antes de demonstrar um exemplo prático, vamos ao comando git push, o "maior aliado" do git remote.
2 - git push
O comando git push é usado para enviar commits locais para um repositório remoto. Ele atualiza o repositório remoto com as alterações que você fez no seu repositório local.
Exemplo:
Exemplos Git Remote e Git Push

Note que antes de enviar o repositório local a um ambiente remoto é necessário o uso do comando git remote. Após seguir estas instruções, você já poderá observar seu repositório no github.

Exemplos Git Remote e Git Push
3 - git fetch
O comando git fetch é usado para buscar as últimas alterações do repositório remoto para o seu repositório local. Quando você executa git fetch, o Git busca todas as alterações feitas no repositório remoto desde a última vez que você sincronizou. No entanto, ele não mescla essas alterações com o seu trabalho atual, apenas atualiza as referências locais para refletir o estado atual do repositório remoto. Isso permite que você veja o que mudou no repositório remoto sem mesclar imediatamente as alterações com o seu trabalho local.
Exemplo:
Exemplo Git Fetch

* Utilizamos o comando "git diff", já demonstrado anteriormente, para conferir as mudanças no repositório remoto:

Git diff
4 - git merge
O comando git merge é usado para integrar as alterações de uma branch para outra no Git. Quando você executa git merge, o Git combina as alterações das duas branches, aplicando as alterações da branch de origem na branch de destino. Com as alterações mescladas e consolidadas na branch de destino, é possível trabalhar em equipe, combinando o trabalho feito em diferentes linhas de desenvolvimento dentro do mesmo projeto.
Exemplo:
Exemplo Git Merge

* Observe que agora não existem diferenças entre o repositório local e o repositório remoto:

Git diff
5 - git pull
O comando git pull atua como uma fusão dos comandos git fetch e git merge, ele 'puxa' a versão desejada do repositório remoto e integra diretamente no seu projeto local. Seu uso mais comum é para atualizar seu repositório local com as alterações mais recentes do projeto remoto, porém, também é possível puxar versões passadas especificando o commit desejado.
Exemplo:
Exemplo Git Pull

* Note que agora o repositório local está atualizado como o repositório remoto:

Antes:

Depois:

Antes do Git Pull Após o Git Pull
6 - git clone
O comando `git clone` cria uma cópia local de um repositório Git remoto. Baixando todos os arquivos e histórico de commits do repositório remoto para o seu sistema local, permitindo que você trabalhe nele ou contribua para ele.
Exemplo:
Exemplo Gitt Clone
* É necessário possuir uma URL para clonar um repositório, podendo ser ela em formato HTTPS, SSH ou Github CLI. Você pode encontrá-la clicando no botão code, presente na página do repositório no Github, ele exibirá todas as chaves para clonar o projeto localmente.
7 - git branch
O comando "git branch" é usado para listar, criar ou deletar branches em um repositório Git. Se usado sem argumentos, ele lista todas as branches presentes no repositório, destacando a atual com um asterisco (*). Para criar uma nova branch, você usa "git branch <nome-da-branch>. E para deletar uma branch, é " git branch -d <nome-da-branch>".
Exemplo:
Antes do Git Pull Após o Git Pull
8 - git checkout
O comando "git checkout" é comumente usado no Git para alternar entre diferentes branches, lembre-se que é necessário especificar a branch que você deseja acessar. Vale também destacar que ele pode ser usado para criar novas branches a partir de commits específicos e para restaurar arquivos em um estado anterior. Contudo, não é tão comumente aplicado para esses fins, devido a existência de outros comandos mais direcionados, como o git revert.
Exemplo:
Exemplo Git Checkout
9 - git stash
O comando "git stash" é usado para temporariamente armazenar mudanças locais que ainda não foram commitadas, permitindo que você limpe seu diretório de trabalho sem perder suas alterações. É muito útil guardar suas mudanças em uma stash quando você precisa mudar de branch ou de ramo de desenvolvimento rapidamente sem comitar suas mudanças incompletas, no entanto, atente-se que os arquivos modificados devem estar sendo monitorados pelo Git para serem armazenados corretamente em uma stash. Cabe também ressaltar as principais formas de usar git stash:
  • git stash - Cria uma stash que armazena temporariamente as mudanças locais.
  • git stash apply <stash_id> - Utilizado para aplicar as mudanças armazenadas em uma stash no diretório de trabalho atual. Note que você ainda precisará excluir essa stash após o uso.
  • git stash drop <stash_id> - Remove permanentemente uma stash específica do repositório.
  • git stash show <stash_id> - Permite visualizar o conteúdo de uma stash específica ou listar todas as stashes disponíveis no repositório.
Exemplo:
Exemplo Git Stash
10 - git rebase
O comando "git rebase" é usado para reescrever o histórico de commits de uma ramificação, movendo-os para uma nova base, geralmente outra branch, permitindo uma integração suave das alterações e uma história de commits mais linear. É um comando muito comum em casos em que temos várias pessoas trabalhando em um mesmo projeto, por exemplo: Você está trabalhando com uma versão do projeto, porém, antes de terminar suas alteracões, um outro integrante de sua equipe atualizou a versão remota com modificações que ele mesmo fez, o comando git rebase é usado para que você possa integrar as alterações dele com as suas de forma limpa, sem prejudicar o histórico do projeto ou deletar partes desnecessariamente.
Exemplo:
Exemplo Git Rebase

  • Utilitários

1 - git help
O comando git help é usado para obter ajuda sobre os comandos do Git. Quando você executa git help, ele exibe informações sobre como usar o Git, incluindo uma lista de comandos e opções disponíveis, além de fornecer uma descrição detalhada de cada comando. Se você deseja conferir os usos de um comando específico, basta digitar "git help nomedocomando" e o Git irá abrir um manual com a descrição e todos os usos do comando desejado.
Exemplo:
Exemplo Git Help
2 - git show
O comando git show exibe informações sobre um commit específico, incluindo as mudanças introduzidas, as mensagens de commit e os metadados associados. Observe que ele foca em mostrar informações detalhadas sobre um único commit especificado.
Exemplo:
Exemplo Git Show
3 - git diff
O comando git diff compara as diferenças entre o estado atual do seu repositório Git e o último commit, mostrando as mudanças entre eles. Também pode ser usado para checar as mudanças entre diferentes branchs e de commits passados para commits recentes. Note que ele se difere ligeiramente do comando git show, visto que foca na diferença entre commits, e não em detalhar um especificamente.
Exemplo:
Exemplo Git Diff Diferenças main atual e penúltimo commit
4 - git revert
O comando "git revert" é usado para desfazer alterações introduzidas por commits específicos, criando novos commits que invertem as mudanças desses commits anteriores. Note que é necessário especificar o commit que você deseja desfazer, após isso, basta executar o comando e todas as alterações feitas nesse commit serão revertidas. É importante destacar também que ele não altera o histórico existente do projeto, apenas adiciona esse novo commit eliminando as alterações desejadas.
Exemplo:
Exemplo Git Revert
5 - git reset
Este comando é usado principalmente para redefinir o HEAD para uma determinada revisão. Ele pode ser usado para desfazer commits, mover o HEAD para uma revisão específica e até mesmo alterar o estado da staging area. Git reset é mais intrusivo do que git revert, pois reescreve o histórico do projeto. É útil para desfazer alterações locais antes de compartilhá-las com outros.
* Se você mover o HEAD para um commit anterior usando git reset, os commits posteriores serão removidos do histórico, e o estado do seu diretório de trabalho será revertido para aquele commit específico. Isso pode ser útil para desfazer alterações ou reverter o projeto para um estado anterior.
Exemplo:
Exemplo Git Reset
* Caso você queira reverter o HEAD do seu repositório definitivamente, basta agora executar o comando "git push -f origin main", ele irá realizar um force push, excluindo todo o histórico de commits no repositório remoto até o estado escolhido do projeto.
6 - git blame
O comando "git blame" é usado para visualizar a autoria de cada linha em um arquivo, mostrando quem modificou o arquivo pela última vez e em qual commit essa modificação foi feita. Ele é útil para rastrear responsabilidades e entender o histórico de alterações em um arquivo específico, no entanto, o comando só consegue atuar sobre arquivos existentes e monitorados pelo git.
Exemplo:
Exemplo Git Blame Descrição das alterações feitas em cada commit no arquivo
7 - git tag
O comando "git tag" é usado para marcar pontos específicos na história do seu repositório, como versões de lançamento. Essas "tags" são pontos de referência estáveis que podem ser usados para identificar versões específicas do seu código. As 3 principais maneiras de usar o comando são:
  • git tag -a "nomedatag" -m "mensagem da tag" - Usado para criar uma tag anotada e fornecer uma mensagem descritiva junto a ela.
  • git tag - Lista todas as tags existentes.
  • git show "nomedatag" - Mostra informações específicas sobre a tag desejada.
Exemplo:
Exemplo Git Tag

Tutorial em Vídeo - Criando seu primeiro repositório Git

Criando seu Primeiro Repositório
Comandos Utilizados Descrição do Comando
git init Inicializa seu repositório Git
git add . Adiciona todos os arquivos da pasta ao sistema de controle de versões
git status Confere quais arquivos do seu repositório estão sendo monitorados pelo Git
git commit -m Salva o estado atual dos seus arquivos no repositório Git
git remote add origin "chavedoseurepositorio" Associa seu repositório local ao repositório remoto
git push -u origin main Envia o estado atual do seu repositório local ao seu repositório remoto Git