de um projeto ao longo do tempo. • Caso alguma alteração precise ser revertida, é só retroceder para a versão anterior. • Permite visualizar quem foi o último a fazer as alterações e o que foi alterado no arquivo. 3
nos arquivos • Controle de histórico: • Facilidade em reverter algo, caso aconteça algum problema. • Trabalho em equipe: • Permite que várias pessoas trabalhem sobre os mesmos arquivos. • Utilização de Tags: • Possibilita marcar versões de código estável. • Utilização de branches: • Possibilidade de divisão do projeto em outras linhas de desenvolvimento (cuidado!) 4
o histórico de evolução dos arquivos do projeto, registrando toda e qualquer alteração feita em cada item versionado. • Área de trabalho: • Local com a cópia dos arquivos do projeto que é monitorada para identificar as mudanças realizadas. 5
há um único repositório e várias cópias de trabalho que se comunicam apenas através do repositório central: • Controles de versão centralizados mais utilizados: • CVS; • SVN.
cada desenvolvedor possui um repositório próprio acoplado a uma área de trabalho: • Controles de versão distribuídos mais utilizados: • Git; • Mercurial.
sua criação: • Velocidade; • Design simples; • Suporte robusto a desenvolvimento não linear (milhares de branches paralelos); • Totalmente distribuído; • Capaz de lidar eficientemente com grandes projetos como o kernel do Linux (velocidade e volume de dados). • Talvez nem tanto - https://www.youtube.com/watch?v=X0VH78ye4yY Criado em 2005, pela comunidade de desenvolvedores do Linux (especialmente Linus Torvalds) para versionar o código do kernel.
ser um repositório • Tudo que o git precisa fica dentro do diretório .git • Basta apaga-lo e o repositório local é removido • git clone: • Clona um repositório remoto com todo o seu histórico 9
(área de trabalho) para o repositório local. • Cada commit gera uma ou mais modificações feitas na área de trabalho (stage), identificando ele com um hash único. • Cuidar a nomenclatura das mensagens: • É importante ter um padrão: 10 • Colocar o #número da task. • Colocar o nome do par que realizou aquele commit. • Colocar uma breve descrição que indique do que se trata aquela alteração. • Criar commits pequenos que façam sentido para quem lê o histórico.
alterações no workspace local. • git diff: • Permite visualizar as alterações realizadas antes de realizar um commit. • git log: • Permite visualizar o log com todos os commits realizados. • git show <hash>: • Permite visualizar as alterações de algum commit específico. 11
nosso projeto que são específicos de cada máquina em que o projeto rodar. 12 • Criamos um arquivo chamado .gitignore na raiz do projeto especificando tudo o que queremos que o git não versione para nós.
verdade não são); • Podem ser evoluídos independentemente; • Geralmente utilizados para implementar alguma feature ou resolução de algum bug sem afetar o master. • git checkout -b [branch_name] • Cria um branch e vai para ele • git checkout [branch_name] • Alterna entre os branches • git branch -a • Lista todos os branches (remotos e locais) • git push origin :[branch_name] • Remove o branche remoto 14
duas pessoas (ocorre com muito mais freqüência ao utilizar branches) • Quando isso essa mesclagem acontece podemos ter: • Merge automático • Conflito 15 Resolução manual de conflitos:
lugar na internet ou rede interna • Github • Gitlab • Heroku • Podemos ter mais de um repositório remoto para o mesmo projeto. • git remote -v • Lista os repositórios remotos. • git remote add [shortname] [url] • Adiciona um repositório remoto. • git remote remove [shortname] • Remove um repositório remoto. 16 Precisamos compartilhar o nosso código com as outras pessoas
código comitado em seu repositório local para o repositório remoto especificado: • git push [remote-name] [branch-name] • Pull: • Busca as alterações no repositório remoto e atualiza seu repositório local • git pull • git pull —rebase • git config --global branch.autosetuprebase always 17
Criar um repositório no github • Criar um repositório local e adicionar o repositório remoto • Comitar os exercicios de java - Um commit por exercício • Fazer push dos arquivos • Trocar de computador e fazer o clone do repositorio • Criar algum(s) alias • Criar sua própria formatação de log (pretty print) • Pesquisar sobre stash e como ele pode ser útil • Pesquisar como utilizar e porque tags são úteis? 21