700 likes | 938 Views
Git : dicas e comandos b ásicos. Afonso R. Costa Jr. Agenda. Configurações básicas Repositórios Trabalhando com Branches Navegando pelo repositório Atualizando o repositório Commits Publicando o código Ferramentas auxiliares Ajuda. Configurações Básicas. Instalação do Git
E N D
Git:dicas e comandos básicos Afonso R. Costa Jr.
Agenda • Configurações básicas • Repositórios • Trabalhando com Branches • Navegando pelo repositório • Atualizando o repositório • Commits • Publicando o código • Ferramentas auxiliares • Ajuda
Configurações Básicas • Instalação do Git • Baixar o arquivo de: http://git-scm.com/download • Instalar • Utilização do Git Bash
Configurações Básicas • Nome e e-mail • git config --global user.name “<nome>” • git config --global user.email <e-mail> A opção --global indica que as configurações serão utilizadas em todos os repositórios.
Configurações Básicas • Habilitando a cor • git config --global color.ui true # Habilita a cor no diff e status
Configurações Básicas • Habilitando preload de index em paralelo • git config --global core.preloadindex true # Útilparaagilizar o status e diff, porexemplo.
Configurações Básicas • Visualizando todas as configurações • git config -l # Mostratodas as configurações, inclusive as globais.
Configurações Básicas • Visualizando uma configuração específica • git config <key> Para alterar uma configuração, basta usar o comando mudando apenas o valor. $ git config user.name
Repositórios • Remoto x Local Ao fazer um clone, nós teremos o repositório local.
Repositórios • Vamos clonar o repositório: git-trainning.git • git clone gitolite@git.indt.org:/git-training.git
Repositórios • Após o clone, o diretório git-trainning estará criado.
Trabalhando com Branches • Por que usar branches? • Facilidade para trabalhar em um ambiente ágil. • Trabalhar em diversas features. • Salvar um trabalho temporário. • Organização do time de desenvolvimento. • Desenvolvedores podem trabalhar em partes distintas do projeto.
Trabalhando com Branches • Ao fazer o clone de um repositório... Remoto remotes/origin/master remotes/origin/XXX Tracking Local master remotes/origin/master remotes/origin/XXX
Trabalhando com Branches • Branch local x Branch remoto • Visualizando os branches do repositório local • git branch Ao fazer um clone, o primeiro branch local no repositóriosempreserá o branch master.
Trabalhando com Branches • Branch local x Branch remoto • Visualizando todos os branches • git branch -a $ gitbranch -a * master remotes/origin/Develop remotes/origin/HEAD -> origin/master remotes/origin/master
Trabalhando com Branches • #FicaDica: crie um branch local para o desenvolvimento do seu trabalho • Branch master local deve ser uma cópia fiel do branch master remoto. • Facilidade para voltar ao ponto inicial.
Trabalhando com Branches • Criando um branch local • git branch <nome_branch> --track origin/master
Trabalhando com Branches • Trocando de branch • git checkout <nome_branch> Indica o branch atual
Trabalhando com Branches • Trocando de branch • Pode ser um branch remoto, sem problemas
Trabalhando com Branches • Criando um branch, fazendo tracking e alterando para o novo branch • git checkout -b <nome_branch> origin/master
Trabalhando com Branches • Removendo um branch local • git branch -D <nome_branch> O branch a serremovidonãopodeser o branch atual.
Trabalhando com Branches • Criando um branch remoto • git push origin <branch_local>:<branch_remoto> Crie um branch remoto com o nome do seulogin.
Trabalhando com Branches • Visualizando o branch remoto na interface Web
Trabalhando com Branches • O branch remoto serve para: • Compartilhar o código. • Revisar o código.
Trabalhando com Branches • Removendo um branch remoto • git push origin:<branch_remoto> Cuidadoparanão remover o branch errado.
Trabalhando com Branches • Removendo um branch remoto • E se um branch remoto foi acidentalmente removido... • Perdemos nosso código? • Cadê o backup?!
Trabalhando com Branches • Removendo um branch remoto • Fique calmo. Basta algum desenvolvedor recriar o branch removido. • Todos os desenvolvedores que fizeram clone de um repositório tornam-se fontes de backup.
Trabalhando com Branches • O branch remoto não aparece mais na interface Web Nãoesqueça de fazer um refreshnapágina.
Trabalhando com Branches • Limpando os branches remotos inutilizáveis • git remote prune <repo_remoto> $ git remote prune origin Pruning origin URL: gitolite@git.indt.org:/git-training.git * [pruned] origin/teste
Navegando pelo Repositório • Listando os arquivos modificados • git status
Navegando pelo Repositório • Visualizando as modificações (fazendo diff) • Todos os arquivos • git diff • Um arquivo específico • git diff <file>
Navegando pelo Repositório • Visualizando o histórico de um branch • git log <branch> git log sem argumento mostra o histórico do branch atual
Navegando pelo Repositório • Quem mudou o quê e quando em um arquivo • git blame <file>
Navegando pelo Repositório • Visualizando um commit específico • git show <commit_hash>
Navegando pelo Repositório • Limpando o repositório • git clean -xdf • Remove os arquivos e diretórios que não estão sob controle de versão.
Commits • Fazendo um commit local • git add <file1> <file2> ... <fileN> • Adicionando arquivo por arquivo. • git commit • Para adicionar todos os arquivos modificados • git commit -a Lembre-se de utilizar o git status para listar os arquivos modificados.
Commits • Fazendo um commit local • Arquivos ou diretórios novos devem ser adicionados com git add antes do git commit. • git commit -a só funciona para os arquivos que já estão sob controle de versão.
Commits • Escrevendo a mensagem do commit Linus Torvaldshttps://github.com/torvalds/subsurface/blob/master/README#L161 - Header line: explaining the commit in one line - Body of commit message is a few lines of text, explaining things in more detail, possibly giving some background about the issue being fixed, etc. - The body of the commit message can be several paragraphs, and please do proper word-wrap and keep columns shorter than about 80 characters or so. That way "git log" will show things nicely even when it's indented.
Commits • Commits locais podem ser corrigidos, removidos, etc. • Commit no branchorigin/master torna-se intocável. • Não é impossível consertá-lo, porém não é recomendável fazer isto.
Commits • #FicaDica: Prepare o seu commit da forma que você considera ideal. • Diferente do SVN, o Git deixa você corrigir o seu commit quantas vezes você achar necessário.
Commits • Fazendo um commit usando a interface gráfica • git gui
Commits • Git GUI
Commits • Git GUI – Observações • Não é uma interface completa. • Git foi projetado para ser utilizado por linha de comando. • É mais fácil para fazer commit no Windows. Um bom exercício é vocês explorarem este tipo de interface
Commits • Consertando o último commit • git commit --amend amend troca o hash do commit # Faça as devidascorreçõesnosarquivos (edit, save, test, …) $ git add <file(s)> $ git commit --amend
Commits • Removendo um arquivo ou diretório • git rm <file> • git rm -r <dir> Precisa fazer um git commit para as alterações ficarem no repositório
Commits • Movendo ou renomeando um arquivo • git mv <file> <new_file> • git mv <dir> <new_dir> Precisa fazer um git commit para as alterações ficarem no repositório
Commits • Desfazendo as mudanças feitas • git reset --hard • Reset em todos os arquivos modificados. • Retorna ao estado do último commit. • Não é possível desfazer este comando. • Cuidado para não perder trabalho.
Commits • Desfazendo as mudanças feitas em um arquivo específico • git checkout -- <file>
Atualizando o Repositório • Obtendo as atualizações feitas no repositório remoto • git fetch • Apenas faz download das atualizações, porém não aplica as mudanças em nenhum branch local.
Atualizando o Repositório • Baixando e aplicando as atualizações no branch atual • git pull --rebase