Git Descomplicado

Post on 24-May-2015

592 views 5 download

Transcript of Git Descomplicado

Fernando Oliveira – fernandooliveira@nyxk.com.brAnalista Desenvolvedor – NYX Knowledge

descomplicado

Uma breve história...

Limpe sua mente de tudo que você conhece sobre outros sistemas de controle de versão…

Antes de começar…

Git não é Subversion(Thanks God!)

git-scm.com

Features

GIT é um sistema de controle de versão distribuído

Sistemas de controle de versão centralizado

Sistemas de controle de versão distribuído

“Snapshots”, ao invés de “diferenças”

Conceitualmente, grande parte dos outros sistemas armazenam informação como uma lista de arquivos baseados em mudanças

GIT pensa seus dados mais como um conjunto de snapshots de um mini sistema de arquivos

quase toda operação é local

A maioria das operações no Git só precisa de arquivos e recursos locais para ser executada

Git garante integridadeTudo no Git é “check-summed”

OS três estados

Configurações…

Sua identificação$ git config --global user.name “Fernando Oliveira”$ git config --global user.email fernandooliveira@nyxk.com.br

Se você quiser sobrescrever estas configurações com um nome e/ou email diferente(s) para um projeto específico, você pode executar os

mesmos comandos sem a opção --global no repositório específico.

Seu editor$ git config --global core.editor emacs

Sua “DiffTool”$ git config --global merge.tool vimdiff

Verificando suas configurações$ git config –list

Ou uma chave específica$ git config user.name

Estas configurações também podem ser feitas editando o arquivo ~ /.

gitconfig

Buscando ajuda$ git help <verb>

$ git <verb> --help

$ man git-<verb>

Inicializando um repositório Git em um diretório existente

$ git init

Clonando um repositório existente

$ git clone <repository address>

Gravando mudanças no repositório

Verificando o status dos seus arquivos

$ git status

”Tracking” novos arquivos ou ”Staging” arquivos modificados

$ git add

Visualizando mudanças “Staged” e “Unstaged”

$ git status

$ git diff

$ git diff --cached

Submetendo suas alterações

$ git commit

$ git commit –m ‘some message’

$ git commit –a

$ git commit –am ‘some message’

Removendo arquivos

$ git rm <file>

$ git rm --cached <file>

Movendo arquivos

$ git mv file_from file_to

Isto é equivalente a

$ mv file_from file_to

$ git rm file_from

$ git add file_to

Visualizando o histórico de commits

$ git log

$ git log --stat

$ git log –graph

$ gitk

Desfazendo coisas

Alterando seu último commit

$ git commit --amend

“Unstaging” um arquivo “Staged”

$ git reset HEAD <file>

Revertendo modificações em um arquivo

$ git checkout -- <file>

TRAbalhando com repositórios remotos

Clonando

$ git clone <endereço do repositório>

Visualizando

$ git remote

$ git remote -v

Adicionando repositórios remotos

$ git remote add <remote_name> <remote_address>

Buscando e puxando do repositório remoto

$ git fetch [remote-name]

$ git pull [remote-name]

Enviando para o repositório remoto

$ git push origin master

Inspecionando um repositório remoto

$ git remote show origin

Removendo e renomeando repositórios remotos

$ git remote rename from_name to_name

$ git remote rm name

Tagging

Tipos de tag

LightWeight tags

Annotated tags

Listando suas tags

$ git tag

Criando annotated Tags

$ git tag -a v1.4 -m 'my version 1.4’

CriandoLightweight Tags

$ git tag v1.4-lw

Verificando Tags

$ git show v1.4

Tagging Later

$ git tag -a v1.2 -m 'version 1.2' 9fceb02

Compartilhando Tags

$ git push origin v1.5

$ git push origin --tags

BRANCHING

Visualizando Branchs

$ git branch

$ git branch -v

Criando Branchs

$ git branch <nome_do_branch>

$ git checkout -b <nome_do_branch>

Submetendo alterações no novo branch

$ git commit -a -m ’<mensagem>’

Mudando de branch

$ git checkout <nome_do_branch>

Merging

$ git merge <nome_do_branch>

Entendendo melhor o merge

Excluíndo

$ git branch -d <nome_do_branch>

rebasing

Excluíndo

$ git rebase <nome_do_branch>

Atenção

Não faça rebase de commits que você enviou para um repositório público.

Stashing

Criando

$ git stash

Listando stashs

$ git stash list

Recuperando stashs

$ git stash apply

The end!

Fernando Oliveiranandooliveira.al@gmail.com