Skip to content

Instantly share code, notes, and snippets.

@guisalmeida
Last active June 8, 2025 22:54
Show Gist options
  • Select an option

  • Save guisalmeida/e879e26ab54dd1215b19d290b0e480ef to your computer and use it in GitHub Desktop.

Select an option

Save guisalmeida/e879e26ab54dd1215b19d290b0e480ef to your computer and use it in GitHub Desktop.
Git commands

GIT Passo a passo

1 Configurar GIT

1.1 Adicionar dados do usuário

git config --global user.name “nome” # cadastra username
git config --global user.email “[email protected]# cadastra e-mail usuario
git config --global core.editor code # cadastra vscode como editor padrão
  
# para saber qual valor está salvo:
git config user.name | user.email | core.editor
  
# para saber todos valores salvos:
git config --list

1.2 Inicializar repositório

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

1.3 Ligando repositório local a um remoto (GIT / GITHUB)

git remote add origin [email protected]:nomeDoUsuario/nomeDaPasta.git # Liga repositório local ao remoto.
git push -u origin master # faz o primeiro envio dos arquivos para repositório remoto.
# Após isso somente usar git push ou se tiver mais de um branch usar
git push origin master # ou nome de outro branch  

1.4 Clonar repositório

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

1.5 GitIgnore

Arquivo no repositório e dentro desse arquivo é descrito padrões que ele deve seguir.
Como tipos de arquivos (*.json = vai ignorar todos arquivos .json)
e também um arquivo especifico descrito pelo seu nome e extensão. 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

1.6 ALIAS atalhos dos comandos(sistema unix)

Cria atalhos para os comandos

git config --global alias.atalho comandoNormal

1.7 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.

git tag -a 1.0.0 -m “Mensagem da tag” # cria tags com descrição.
git push origin master –tags # para subir para repositório remoto todas tags criadas ate o momento.
git tag -D nomeDaTag # apaga tag no repositório local

1.7.1 Apagando Tags e Branchs no repositório remoto

git push origin :nomeDaBranch ou :nomeDaTag

2 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.

ciclo de vida

3 Commit

3.1 Editar último commit

git commit --amend # abre arquivo git onde os dados do commit estão para poderem ser editados e salvos.
Caso tenha novas alterações em staged vão ser adicionadas nesse mesmo commit.

git commit --amend --no-edit # Adiciona alterações em staged mas não abre arquivo de dados do commit para alteração.

3.2 Copiar commit

Útil para copiar commits de outras branchs.

git cherry-pick <hash> # pega as alterações do commit selecionado e adicionado na branch atual.

3.3 Selecionar alterações manualmente para fazer commit

git add -p # abre editor mostrando as alterações de cima para baixo no arquivo com opções.

exemplo:
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index ae6e86e..778f546 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -5,6 +5,7 @@ import { AppRoutingModule } from './app-routing.module';
 import { AppComponent } from './app.component';
 import { HomeModule } from './home/home.module';
 import { ReservationModule } from './reservation/reservation.module';
+import { HttpClientModule } from '@angular/common/http';
 
 @NgModule({
   declarations: [
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? 

Legenda das opções:

  • y = yes
  • n = no
  • q = do not add and quit menu
  • a = add all
  • d = do not add for all
  • j = jump/skip to the next one
  • g = jump back previous one
  • s = split changes
  • e = edit manually

3.4 Juntar agrupar commits (squash)

git rebase -i HEAD~<number of commits> # abre editor com os commits selecionados.

Exemplo:
pick faf5650 add initial components and services for reservation system
pick 50519c3 chore: local storage reservations

# Rebase b0965ee..50519c3 onto b0965ee (2 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
#                    commit's log message, unless -C is used, in which case
#                    keep only this commit's message; -c is same as -C but
#                    opens the editor
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified); use -c <commit> to reword the commit message
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#

4 Branch

Ponteiro móvel que leva um commit

branch

Pode haver mais de um branch no mesmo repositório, posicionados ou não em um mesmo commit/hash.

separando

image

4.1 Criar branch

git checkout -b nomeBranch # cria novo branch onde o HEAD vai ficar posicionado.
git checkout nomeBranch # muda para o branch selecionado.
git branch # mostra todos os branchs do repositório.
git branch -D nomeBranch # deleta branch selecionado no repositório local, e também os commits que estãoapontados nele.

4.2 Unir branchs

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

merge

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.

rebase

rebase

4.3 Merge e rebase na prática

Se você está atualizando o seu branch com coisas vindas do master, use...

git pull origin master --rebase

Isso vai evitar sujar o gráfico com mensagens de merge que não são necessárias.

Se você está jogando sua mudança para o master, use...

git merge nome_da_branch

pois isso vai sinalizar onde a mudança entrou e também não vai precisar forçar nenhum push.

5 Comandos úteis

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

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

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

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

git log # mostra hash commit, autor, data e msg do commit.
git log --decorate # mostra infos adicionais como branchs, merge e etc.
git log --author=”nomeAutor” # lista todos commits desse autor.
git log --graph # lista em forma grafica o que está acontecendo.

git shortlog # lista em ordem alfabetica autores, quantos commits eles fizeram e quais foram.
git shortlog -sn # lista apenas quantidade de commits e autor.

git reflog # mostra todas informações do historico inclusive commits deletados com reset hard.

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

git diff # consegue ver alterações feitas no arquivo comparado com a versão anterior salva antes de adicionar para commitar.
git diff --name-only # lista somente nomes dos arquivos modificados.

# 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.
git stash list # lista todos arquivos que foram alterados para WIP.
git stash clear # elimina todos arquivos que estiverem no stash.

5.2 Comandos para desfazer

5.2.1 Reset

Bom para branchs separadas pois não mantém as alterações feitas pelo reset no histórico.

Evitar fazer na master pois outros usuários terão problemas com histórico desatualizado.

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

git reset HEAD <filename> # volta para modified arquivo que estava em staged.
git reset --soft <hash> # apaga todos commits depois do hash e retorna as alterações para staged.
git reset --mixed <hash> # apaga todos commits depois do hash e retorna as alterações pra modified.
git reset --hard <hash> # apaga todos commits depois do hash e volta pra ultima versão salva do arquivo.

# atualizar alterações no remoto
git push -f origin codigoHash:branch

5.2.2 Revert

Volta as alterações para um passo anterior mas mantem no histórico do commit anterior com alteração.

git revert <hash> # reverte alteração feita, mas mantém commit da alteração no histórico.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment