Skip to content

Instantly share code, notes, and snippets.

@robertsanseries
Last active September 19, 2022 00:42
Show Gist options
  • Save robertsanseries/3db85f2f390eca3ef6c641e6df33c45d to your computer and use it in GitHub Desktop.
Save robertsanseries/3db85f2f390eca3ef6c641e6df33c45d to your computer and use it in GitHub Desktop.
GIT - Guia dos comandos mais usados

h1. Dicas GIT

Essa página tem o objetivo de reunir diversas dicas para usar o GIT.

h2. Configurar GIT - Forma Global, ou seja, qualquer projeto que use o git terá as configurações abaixo

# cadastra nome do usuario
git config --global user.name nome 

# cadastra e-mail do usuario
git config --global user.email email@email.com 

# cadastra vscode como editor padrão
git config --global core.editor code 
  
# para saber qual valor está salvo:
git config user.name | user.email | core.editor
  
# para saber todos valores salvos:
git config --list

h2. Configurar GIT - Forma local, ou seja, somente o projeto em que esta trabalhando, terá as configurações abaixo

# cadastra nome do usuario
git config --local user.name nome 

# cadastra e-mail do usuario
git config --local user.email email@email.com 

# cadastra vscode como editor padrão
git config --local core.editor code 
  
# para saber qual valor está salvo:
git config user.name | user.email | core.editor
  
# para saber todos valores salvos:
git config --list --local

h2. Inicializar repositório

# inicializa repositório no git e cria pasta .git com arquivos de confgiguração)
git init 

h2. Ciclo de vida | status dos arquivos

**Untracked** - Não marcado, arquivo que acabou de ser adicionado no repositório mas ainda não foi visto(não foi add) pelo git.

Unmodified - Já foi adicionado no GIT mas não sofreu nenhuma alteração.
Modified - Arquivo já add que sofreu alteração.
Staged - área onde vai ser criado a versão, arquivo prontos para serem enviados pelo commit criando hash. E os arquivos voltam pro estado unmodified.

h2. Ligando repositório local a um remoto (GIT / GITLAB / GITHUB)

# Ligando repositório local ao remoto.
git remote add origin git@github.com:nomeDoUsuario/nomeDaPasta.git 

# Fazer o primeiro envio dos arquivos para repositório remoto.
git push -u origin master

# Após isso somente usar Git push ou se tiver mais de um branch usar
git push origin master # ou nome de outro branch  

h2. Clonar repositório

# clona repositório para pasta local na maquina.
git clone endereçoRepositório(html/ssh) nomeDaPasta

h2. Criar branch

# cria novo branch onde o HEAD vai ficar posicionado.
git checkout -b nomeBranch 

# muda para o branch selecionado.
git checkout nomeBranch 

# mostra todos os branchs do repositório.
git branch 

# deleta branch selecionado no repositório local, e também os commits que estãoapontados nele.
git branch -D nomeBranch 

h2. Unir branchs - Diferença entre Merge e Rebase

**Merge** - cria um commit extra, fazendo uma junção dos ultimos commits de branchs diferentes no branch principal.

Rebase - Pega tudo que tiver no branch separado e bota no incio da fila(fast foward). Aplica todas as mudanças para frente da fila.

h2. Merge e rebase na prática

Se você está atualizando o seu branch com coisas vindas do master, use o comando abaixo para evitar sujar o gráfico com mensagens de merge que não são necessárias.

git pull origin master --rebase

Se você está jogando sua mudança para o master, use comando abaixo pois isso vai sinalizar onde a mudança entrou e também não vai precisar forçar nenhum push

git merge nome_da_branch

h2. GitIgnore

É um arquivo no repositório e dentro desse arquivo é descrito padrões com os tipos de arquivos que o git vai ignorar.

Exemplo para ignorar todos arquivos .json: *.json

Consultar - https://github.com/github/gitignore

Se o arquivo já tinha adicionado alguma vez, primeiro você precisa removê-lo do cache.

 git rm --cached caminho/arquivo.extensão

h2. Comandos úteis

# reporta como está repositório no momento, mostra status dos arquivos e em qual branch está e etc..
git status 

# adiciona arquivo no repositório para ser administrado pelo git
git add arquivo 

# cria uma imagem(snapshot) com todos arquivos tendo uma versão.  
git commit -m mensagem sobre o commit # Cada commit gera uma hash(código único) para identificação dessa versão.

# commitar arquivo já adicionado anteriormente sem precisar add depois da modificação, commita direto.
git commit -am mensagem sobre o commit 

# mostra hash commit, autor, data e msg do commit.
git log 

# lista os logs em linhas de forma mais limpa..
git log --oneline 

# mostra infos adicionais como branchs, merge e etc.
git log --decorate 

# lista todos commits desse autor.
git log --author=nomeAutor

# lista em forma grafica o que está acontecendo.
git log --graph 

# lista em ordem alfabetica autores, quantos commits eles fizeram e quais foram.
git shortlog 

# lista apenas quantidade de commits e autor.
git shortlog -sn 

# mostra alterações feitas no arquivo commitado, comparado com sua versão anterior.  
git show [codigoHash] 

# consegue ver alterações feitas no arquivo comparado com a versão anterior salva antes de adicionar para commitar.
git diff 

# lista somente nomes dos arquivos modificados.
git diff --name-only 

# lista os remotes.
git remote

# lista os nomes e endereços.
git remote -v

h2. Git Stash

Comando responsável por guardar modificações(arquivos que estão no modo modified) que ainda não foram commitadas num arquivo que possa acessar depois quando necessário.

# salva o estado dos arquivos alterados para o WIP.
git stash save "mensagem"

# lista todos arquivos que foram alterados para WIP.
git stash list 

# aplica as modificações de um stash salvo.
git stash apply {numero-do-stash}

# remove um stash salvo.
git stash drop {numero-do-stash}

# aplica e remove o ultimo stash salvo
git stash pop

# elimina todos arquivos que estiverem no stash.
git stash clear 

h2. Cria atalhos (ALIAS) para os comandos (sistema unix)

git config --global alias.atalho comandoNormal

h2. Criar tags

As tags servem para definir versões do que está sendo feito, para separar partes de um projeto com vários commits. Ficam na aba releases.

# cria tags com descrição.
git tag -a 1.0.0 -m Mensagem da tag 

# para subir para repositório remoto todas tags criadas ate o momento.
git push origin master –tags 

# apaga tag no repositório local
git tag -D nomeDaTag 

h2. Comandos para desfazer

# retorna estado do arquivo de modified para antes da edição = unmodified.
git checkout nomeArquivo 

# volta para modified arquivo que estava em staged.
git reset HEAD nomeArquivo 

# cancela commit e retorna arquivo pra staged pronto pra ser commitado de novo
git reset --soft codigoHash 

# cancela commit e retorna arquivo pra modified.
git reset --mixed codigoHash

# cancela e apaga tudo até a ultima versão salvo do arquivo. 
git reset --hard codigoHash 

h2. Revert

Tipo ctrl+Z, volta um passo anterior mas mantem no histórico o commit anterior com alteração. Já no reset ele deletaria o commit.

git revert numeroHash # reverte alteração feita, mas mantém commit da alteração no histórico.

h2. Apagando Tags e Branchs no repositório remoto

git push origin :nomeDaBranch ou :nomeDaTag --delete

h2. Ignorar localmente arquivos proibidos no commit

  • Edite o arquivo .git/info/exclude, essa pasta .git fica dentro da pasta raiz do projeto, colocar o caminho para o arquivo a ser ignorado localmente, conforme imagem abaixo:

!image-01.png!

Em seguida, rodar o comando: git update-index –skip-worktree. Exemplo:

git update-index –skip-worktree .gitignore

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment