Este treinamento visa capacitar o participante a desenvolver e gerenciar projetos de software utilizando o Git como ferramenta de controle de versão.
Durante o treinamento, o participante irá estudar os seguintes tópicos:
- 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.
Para mais detalhes sobre o conteúdo, você pode consultar a agenda e os slides do treinamento.
Os slides deste treinamento são liberados sob a licença Creative Commons BY-SA 3.0, e os fontes podem ser baixados aqui.
Algumas fotos dos treinamentos já realizados podem ser visualizadas aqui.
Público alvo
Estudantes, engenheiros, analistas, desenvolvedores e líderes de equipes de desenvolvimento de software.
Pré-requisitos
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).
Material de estudo
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.
Turmas abertas
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 esteja interessado em participar do treinamento e não exista uma turma aberta, faça a pré-inscrição clicando aqui. Entraremos em contato assim que uma nova turma for aberta.
Treinamentos in-company
Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa.
Turmas fechadas para treinamento in-company possuem as mesmas características de uma turma aberta. Neste modelo, a empresa é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, datashow e as máquinas de desenvolvimento. Esse modelo também traz grande economia para a empresa, já que os custos de transporte e hospedagem de vários funcionários é reduzido apenas ao do instrutor.
Se sua empresa tem uma necessidade especial, podemos estudar um programa que atenda sua necessidade de forma direcionada, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver um conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato.
Treinamentos na sua cidade
Você pode levar os treinamentos para sua comunidade, em qualquer cidade do Brasil.
Você não tem condições de realizar o curso em São Paulo? Você tem um grupo de estudos e quer aprender mais sobre determinada tecnologia? Você coordena ou participa da coordenação de algum curso na sua universidade e gostaria de treinar seus alunos? Você tem um espaço, quer reunir os amigos e passar agradáveis horas aprendendo sobre sistemas embarcados?
Mande um e-mail ou uma mensagem para nós. Informe seu curso de interesse e também a sua cidade. Se conseguirmos formar uma turma, poderemos levar o treinamento para a sua cidade!
Ainda tem dúvidas?
Em caso de dúvidas, críticas ou sugestões, envie um e-mail ou deixe uma mensagem na página de contato.
Entre em contato