Objetivo
Este treinamento visa capacitar o participante a desenvolver e gerenciar projetos de software utilizando o Git como ferramenta de controle de versão.
Conteúdo programático
- O que é um sistema de controle de versão, tipos de sistemas de controle de versão, vantagens de um sistema de controle de versão distribuído, histórico e principais características do Git, instalando e configurando o Git, introdução aos comandos básicos de gerenciamento de um repositório Git, interfaces gráficas para o Git.
- Comparando sistemas de controle de versão baseados em deltas e snapshots, os três tipos de arquivos no Git (tracked, untracked, ignored), os estados de um arquivo rastreado (commited, modified, staged), as seções de um repositório Git (diretório de trabalho, staging/index e repositório), inicializando um repositório Git, exibindo o status do repositório, adicionando arquivos ao repositório, comitando arquivos, modificando arquivos comitados, exibindo a diferença entre os arquivos do diretório de trabalho, index e repositório, removendo e renomeando arquivos, criando apelidos de comandos.
- Conceitos de um branch, criando, listando e removendo branches, o que é o HEAD, mudando de branch, fazendo commits em um branch separado, exibindo uma representação gráfica do histórico de commits, fazendo merge de branches, merges do tipo fast-forward, gerando commits de merge, resolvendo conflitos de merge, fazendo rebase, comparando merge e rebase, exibindo o histórico de alterações no HEAD, conceitos de uma tag, os dois tipos de tags (lightweight e annotated), criando e listando tags, comparando branches e tags.
- Pesquisando e filtrando o histórico de um repositório Git, as diversas formas de referenciar um commit no repositório, definindo ranges de commits, filtrando o histórico de commits com o comando log, comparando os arquivos do repositório, fazendo buscas de strings e expressões regulares no repositório, fazendo buscas com o recurso de pickaxe, técnicas para identificar problemas no código-fonte com o Git.
- Reescrevendo o histórico de commits do repositório, juntando e dividindo commits, reordenando e removendo commits, refazendo o último commit, utilizando o recurso de rebase interativo para reescrever o histórico de commits, movendo um branch e o HEAD para qualquer commit do repositório, recuperando o conteúdo do index e do diretório de trabalho, recuperando uma versão mais antiga de um arquivo do repositório, reintroduzindo commits no repositório, revertendo commits, salvando e limpando o diretório de trabalho.
- Introdução ao funcionamento interno do Git, o conteúdo e a organização do diretório .git/, os tipos de objetos do repositório (blob, tree, commit, tag), como os objetos são armazenados no repositório, o hash de um objeto, adicionando manualmente um objeto do tipo blob ao repositório, listando informações de um objeto do repositório, adicionando objetos ao index e criando um objeto do tipo tree, criando um objeto do tipo commit, configurando referências (branches) aos objetos do tipo commit e movendo o HEAD, criando objetos do tipo tag, como o Git comprime os objetos no repositório, o funcionamento do garbage collection.
- Gerenciando e trabalhando com repositórios remotos, clonando um repositório remoto em uma máquina local, protocolos suportados pelo Git, listando, adicionando e removendo repositórios remotos, rastreando branches remotos, enviando alterações para um repositório remoto (push), recebendo alterações de um repositório remoto (fetch/pull), fazendo o merge ou rebase das alterações feitas no repositório local com as alterações do repositório remoto, criando e removendo branches remotos, compartilhando tags, formatando e aplicando patches, enviando patches por email.
- Estabelecendo um workflow de desenvolvimento com o Git, exemplos de workflows de desenvolvimento comuns, estudando o github flow e o git-flow, comparando fast-forward com commits de merge, liberando releases com branches e tags, boas práticas para definir uma mensagem de commit, dicas e sugestões de definição de workflows, gerando um número identificador do build da aplicação com o Git, trabalhando com submódulos, implementando scripts de hook.
- Considerações finais, links e recursos adicionais, recomendações de livros, dúvidas e comentários finais, encerramento.
Para mais detalhes sobre o conteúdo, você pode consultar a agenda e os slides do treinamento.
Informações adicionais
Estudantes, engenheiros, analistas, desenvolvedores e líderes de equipes de desenvolvimento de software.
Familiaridade com a interface de linha de comandos, experiência com desenvolvimento de software, desejável (mas não obrigatória) experiência com uma ferramenta de controle de versão (CVS, Subversion, Perforce, TFVC, etc).
O material de estudo é composto pelos slides das apresentações, o livro de atividades e exercícios, os guias de referência e documentos de estudo adicionais. Todo o material será fornecido de forma eletrônica no início do treinamento.
O treinamento pode ser apresentado nos seguintes idiomas: Português brasileiro e Inglês.
Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa. Nos treinamentos in-company, a empresa contratante é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, projetor e máquinas de desenvolvimento para os alunos. Esse modelo traz grande economia para a empresa, já que o custo do transporte e estadia de vários funcionários é reduzido apenas ao do instrutor. Caso a empresa contratante tenha alguma necessidade específica, podemos estudar a criação de um conteúdo programático especial, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver algum conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato .
Os treinamentos em turmas abertas são realizados em um ambiente agradável, com um laboratório devidamente equipado e acesso à Internet. As aulas são normalmente ministradas em período integral, com uma parada para o almoço e um coffee-break pela manhã. Caso tenha interesse em participar de um treinamento mas não exista uma turma disponível, envie uma mensagem pela página de contato que avisamos assim que uma nova turma for aberta.
Este treinamento pode ser realizado de forma online. Os treinamentos online são apresentados ao vivo em uma plataforma de reunião virtual como o Google Meet ou o Zoom.
Galeria de fotos
Algumas fotos dos treinamentos já realizados: