Upload
pablo-neves-machado
View
65
Download
4
Tags:
Embed Size (px)
DESCRIPTION
Slide utilizado para apresentar o funcionamento da ferramenta de controle de versão Git.
Citation preview
Pablo [email protected]
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?
Introdução
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
"I'm an egotistical bastard, and I name all my projects after myself. First 'Linux', now 'git'.
Vantagens
➔ Trabalhar offline➔ Velocidade➔ Versionamento local➔ Distribuido➔ Suporte a grandes projetos
Um mundo de possibilidades
Distribuido X Centralizado
Configurações
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
Primeiros Passos
➔ git init➔ git clone➔ git config➔ git add➔ git commit➔ git status➔ git log
Meu primeiro commit
➔ Criar arquivo
➔ Adicionar arquivo
➔ Commitar arquivo
Stash
Status do repositório
$ git status
$ git log
$ git log --pretty=oneline
$ git diff
$ git log --pretty=format:"%h %s" --graph
git log --stat
Como tudo funciona? (baixo nível)
➔ Gerência de estados (snapshots)
➔ Nada é apagado
Commit contêm:ArvoreAutorComitadorMensagemPonteiro para o commit anterior
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”
Trabalhando com Branchs
Branch / checkout
Ponteiro para um commit
Precisa de um nome
$ git branch working
$ git branch -t feature
$ git branch
$ git branch -r
Merge
Mescla os commits de 2 branchs
Algoritmos de Merge➔ 3-way merge➔ fast-forward merge
$ git merge branchName
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
Rebase
Altera o histórico
Permite apagar commits da história
$ git rebase master
$ git rebase -i master
Rebase
Altera o histórico
Permite apagar commits da história
$ git rebase master
$ git rebase -i master
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
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>
Fiz merda, e agora?
$ git commit --amend
$ git clean -n
Dicas
Eu quero ser um mestre Jedi!
http://pcottle.github.io/learnGitBranching/https://www.atlassian.com/gitPro Git - Scott Chacon