34
Pablo Machado [email protected]

Git - Visão Geral

Embed Size (px)

DESCRIPTION

Slide utilizado para apresentar o funcionamento da ferramenta de controle de versão Git.

Citation preview

Page 1: Git - Visão Geral

Pablo [email protected]

Page 2: Git - Visão Geral

1. Introdução

2. Configuração

3. Primeiros passos

4. Como tudo funciona? (baixo nível)

4. Trabalhando com Branchs

5. Repositórios remotos

6. WorkFlow

7. Fiz merda, e agora?

Page 3: Git - Visão Geral

Introdução

Page 4: Git - Visão Geral

Initially designed and developed by Linus Torvalds for Linux kernel development in 2005.

➔ Distribuido➔ Alta performance➔ Free➔ Confiabilidade

Take CVS as an example of what not to do.

Significado: "unpleasant person".

Histórico

Page 5: Git - Visão Geral

"I'm an egotistical bastard, and I name all my projects after myself. First 'Linux', now 'git'.

Page 6: Git - Visão Geral

Vantagens

➔ Trabalhar offline➔ Velocidade➔ Versionamento local➔ Distribuido➔ Suporte a grandes projetos

Um mundo de possibilidades

Page 7: Git - Visão Geral

Distribuido X Centralizado

Page 8: Git - Visão Geral

Configurações

Page 9: Git - Visão Geral

Instalando

Usuário

Ferramenta de merge

Ferramenta de edição de texto

Alias

$ git config --global user.name "Eu"$ git config --global user.email [email protected]

$ git config --global core.editor emacs

$ git config --global merge.tool vimdiff

$ git config --global alias.co checkout

$ apt-get install git

Page 10: Git - Visão Geral

Primeiros Passos

Page 12: Git - Visão Geral

Meu primeiro commit

➔ Criar arquivo

➔ Adicionar arquivo

➔ Commitar arquivo

Stash

Page 13: Git - Visão Geral

Status do repositório

$ git status

$ git log

$ git log --pretty=oneline

$ git diff

$ git log --pretty=format:"%h %s" --graph

git log --stat

Page 14: Git - Visão Geral
Page 15: Git - Visão Geral

Como tudo funciona? (baixo nível)

Page 16: Git - Visão Geral

➔ Gerência de estados (snapshots)

➔ Nada é apagado

Commit contêm:ArvoreAutorComitadorMensagemPonteiro para o commit anterior

Page 17: Git - Visão Geral

Qual é a mágica?

$ find .git/objects/ -type f | awk -F '/' '{print $3$4}' | git cat-file --batch

$ git init

$ echo “ola mundo” > oi.txt

$ git add .

$ git commit -m “meu primeiro commit”

Page 18: Git - Visão Geral

Trabalhando com Branchs

Page 19: Git - Visão Geral

Branch / checkout

Ponteiro para um commit

Precisa de um nome

$ git branch working

$ git branch -t feature

$ git branch

$ git branch -r

Page 20: Git - Visão Geral

Merge

Mescla os commits de 2 branchs

Algoritmos de Merge➔ 3-way merge➔ fast-forward merge

$ git merge branchName

Page 21: Git - Visão Geral

Resolvendo conflitos

Requisitos:➔ 2 branchs com mesma origem➔ Realizar alterações conflitantes➔ Realizar Merge nos 2 branchs

$ git merge testeConflito

$ Auto-merging arquivo.txtCONFLICT (content): Merge conflict in arquivo.txtAutomatic merge failed; fix conflicts and then commit the result.

$ git mergetool

$ git commit

Page 22: Git - Visão Geral

Rebase

Altera o histórico

Permite apagar commits da história

$ git rebase master

$ git rebase -i master

Page 23: Git - Visão Geral

Rebase

Altera o histórico

Permite apagar commits da história

$ git rebase master

$ git rebase -i master

Page 24: Git - Visão Geral

Remote / CloneAdicionar/Editar repositórios remotos

Protocolos

➔ Local/opt/git/project.git

➔ SSHuser@server:project.git

Gitgit:localhost/your-path/project-X

➔ HTTP/Shttp://example.com/gitproject.git

$ git remote add NAME URL

http://git-scm.com/book/en/Git-on-the-Server-The-Protocols

$ git clone URL

Page 25: Git - Visão Geral

Fetch / Push / Pull

$ git fetch <remote>

https://www.atlassian.com/git/tutorial/remote-repositories

$ git fetch <remote> <branch>

$ git pull <remote>

$ git push <remote> <branch>

Page 26: Git - Visão Geral

Fiz merda, e agora?

Page 27: Git - Visão Geral
Page 28: Git - Visão Geral
Page 29: Git - Visão Geral
Page 30: Git - Visão Geral
Page 31: Git - Visão Geral

$ git commit --amend

$ git clean -n

Dicas

Page 32: Git - Visão Geral
Page 33: Git - Visão Geral
Page 34: Git - Visão Geral

Eu quero ser um mestre Jedi!

http://pcottle.github.io/learnGitBranching/https://www.atlassian.com/gitPro Git - Scott Chacon