Last active
August 29, 2015 14:14
-
-
Save felipebizz/ed27de6b02e08b4f5844 to your computer and use it in GitHub Desktop.
Git Examples
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Configurando informações sobre o autor dos commits: | |
git config --global user.name "Felipe Lima" | |
git config --global user.email "[email protected]" | |
É possível alterar essas informações no arquivo ~/.gitconfig | |
#Criando um repositório local: | |
cd meuprojeto | |
git init | |
Para ter certeza que o repositório foi criado: | |
git status | |
#Áreas de Trabalho | |
#O git possui 4 áreas de trabalho: | |
#1. O diretório .git que é o repositório contendo todos os arquivos versionados; | |
#2. Working Area que é um snapshot do .git dentro de um determinado momento no tempo; | |
#3. Stage que é um local temporário que armazena a referência para arquivos a serem versionados antes de serem commitados; | |
#4. Stash que também é um local temporário que pode armazenar e esconder arquivos que estão no Stage. | |
#Adicionando arquivos novos ou modificados no Stage: | |
git add arquivo.txt | |
git add *.py | |
git add . (para add todos os arquivos) | |
git add -i (para modo interativo. 1-5 ou 1,2,3,4 e -3 para retirar) | |
Removendo arquivos não versionados do Stage: | |
git rm --cached arquivo.txt | |
git clean -fd (remove todos arquivos e diretórios) | |
Removendo arquivos versionados e modificados do Stage: | |
git reset HEAD arquivo.txt | |
git reset HEAD (todos os arquivos) | |
Desfazendo modificações de arquivos versionados no Stage: | |
git checkout -- arquivo.txt | |
#Trabalhando com o Stash: | |
git stash (Move todos os arquivos do Stage para o Stash) | |
git stash save "Mensagem" (Move todos os arquivos do Stage para o Stash e os identifica com uma mensagem) | |
git stash list | |
git stash apply (Recupera os arquivos do último Stash de volta para o Stage mantendo cópia no Stash) | |
git stash apply <ID> (Recupera os arquivos do Stash identificado pelo ID obtido pelo git stash list. Ex.: stash@{0}) | |
git stash pop (Faz o mesmo que apply porém apaga os arquivos do Stash) | |
git stash drop <ID> (Apaga completamente o Stash) | |
git fsck --unreachable | grep commit (Recupera arquivos apagados do Stash) | |
Commits | |
#Apenas arquivos no Stage podem ser commitados. | |
git commit -m "Mensagem" | |
git commit -a -m "Mensagem" (commita também os arquivos versionados mesmo nao estando no Stage) | |
Refazendo commit quando esquecer de adicionar um arquivo no Stage: | |
git add arquivo.txt | |
git commit -m "Mensagem" --amend | |
O amend é destrutivo e só deve ser utilizado antes do commit ter sido enviado ao servidor remoto. | |
#Voltando commits anteriores: | |
git reset --hard HEAD~1 (volta ao último commit) | |
git reset --soft HEAD~1 (volta ao último commit e mantém os últimos arquivos no Stage) | |
git reset --hard XXXXXXXXXXX (Volta para o commit com a hash XXXXXXXXXXX) | |
#Recuperando commit apagado pelo git reset: | |
git reflog (Para visualizar os hashs) | |
git merge <hash> | |
Logs | |
#Visualizando logs: | |
git log | |
git log --stat (Mostra o que foi modificado em cada commit) | |
git log --graph (Mostra gráfico do log) | |
git log --pretty=oneline (Mostra os commits linha por linha) | |
git log --pretty=format:"%an %ad %h %s" (Exibe o autor, data, sha1 abreviado e texto do commit) | |
git log --since=30.minutes ou 1.hour ou 2.hours (Exibe commits dos últimos 30 minutos, 1h ou 2h) | |
git log --since=10.hours --until=2.hours (Exibe commits entre as últimas 10h e últimas 2h) | |
git log --before="2010-12-25" (Exibe commits antes do dia 25/12/2010) | |
git reflog (Mostra commits apagados pelo git reset) | |
#Branches | |
#Cada branch deve ter uma única funcionalidade. É recomendado criar um novo branch a partir do master e aplicar os merges nele #para efeito de simulação. | |
git branch (Lista os branches) | |
git branch -a (Mostra também os branches do repositório remoto) | |
git branch -d novobranch (Apaga o branch) | |
git branch -D novobranch (Força a remoção do branch) | |
git checkout -b novobranch (Cria um branch contendo os mesmos commits do branch de origem) | |
git checkout -b novobranch origin/outrobranch (Cria novobranch a partir do outrobranch no repositório remoto) | |
git checkout -b [branch, tag, sha1] | |
git checkout -b <branch> v1.0 (Cria um branch a partir da tag v1.0) | |
git checkout master (Retorna ao branch master) | |
git rebase master (Atualiza um branch com o que há de novo no master) | |
git merge novobranch (Faz um merge do que foi feito em novobranch) | |
git merge novobranch --squash (Permite definir uma nova mensagem em vez das mensagens de todos os commits do novobranch) | |
Conflitos | |
#Quanto mais tempo demorar para atualizar um branch a partir do master (git rebase), maior será a chance de haver conflitos #depois. | |
#O rebase é destrutivo, se estiver trabalhando em um servidor remoto deve usar o merge. | |
git rebase --skip (Perde o arquivo novo) | |
git rebase --abort (Cancela o rebase) | |
git rebase --continue (Para continuar após lidar com o conflito manualmente) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment