• O Git é um sistema de controle de versão distribuído e amplamente utilizado para rastrear as mudanças em ficheiros e colaborar no desenvolvimento de software. Foi criado por Linus Torvalds em 2005 e tornou-se uma ferramenta fundamental para desenvolvedores de software em todo o mundo. • Quando se perguntou o porquê do nome, Linus Torvalds satirizou sobre o termo "Git", uma gíria em inglês britânico para cabeça dura, pessoas que acham que sempre têm razão, argumentativas, podendo ser também pessoa desagradável ou estúpida:
• Aqui estão alguns dos conceitos e recursos principais do Git:
Formador: Cristóvão Costa 3
Controle de Versão: • O Git permite que acompanhe as mudanças em seus ficheiros ao longo do tempo. Isto é útil para rastrear o histórico de alterações, identificar quem fez uma alteração específica e, se necessário, reverter para versões anteriores do código.
• Está a desenvolver um aplicativo web e deseja acompanhar as
mudanças no código-fonte ao longo do tempo. Com o Git, pode fazer um commit a cada vez que faz uma alteração significativa, registando o que foi feito.
Formador: Cristóvão Costa 4
Distribuído: • O Git é um sistema de controle de versão distribuído, o que significa que cada utilizador que trabalha com um repositório Git possui uma cópia completa do histórico do projeto. Isso oferece independência, flexibilidade e facilidade de colaboração.
• Vários desenvolvedores trabalham em um projeto em suas máquinas
locais. Cada um deles tem uma cópia completa do repositório Git. Eles podem trabalhar offline e, em seguida, sincronizar suas alterações quando estiverem online.
Formador: Cristóvão Costa 5
Repositório: • Um repositório Git é um diretório onde seus ficheiros e histórico de versões são armazenados. Existem repositórios locais (em sua máquina) e repositórios remotos (em servidores ou plataformas como o GitHub).
• Pode criar um diretório chamado "meu-projeto" e inicia um
repositório Git dentro dele. Agora, todos os ficheiros desse diretório fazem parte do repositório Git.
Formador: Cristóvão Costa 6
Branches: • O Git permite que você crie "branches" para trabalhar em novos recursos ou correções de bugs sem afetar a versão principal do projeto. Isso ajuda a isolar o trabalho em progresso e facilita a colaboração.
• Pode criar uma nova branch chamada "funcionalidade-nova" para
desenvolver um novo recurso. Isso permite que trabalhe nessa funcionalidade sem afetar a branch principal do projeto.
Formador: Cristóvão Costa 7
Branches:
Formador: Cristóvão Costa 8
Commits: • Um "commit" no Git é uma operação na qual registra as alterações em seu repositório. Cada commit tem uma mensagem que descreve as mudanças feitas.
• Após fazer algumas alterações no código, utiliza o comando git
commit -m "Adicionar função de login“ para criar um commit com uma mensagem a explicar as mudanças.
Formador: Cristóvão Costa 9
Merge e Rebase: • O Git oferece opções para combinar alterações de uma branch em outra. O "merge" e o "rebase" são duas formas de fazer isso, com diferenças na forma como as alterações são integradas.
• Após concluir o desenvolvimento de uma funcionalidade em uma
branch, pode usar o comando git merge para incorporar essas alterações na branch principal ou o comando git rebase para reorganizar os commits de sua branch na ordem correta.
Formador: Cristóvão Costa 10
GitHub e GitLab: • Plataformas como o GitHub e o GitLab fornecem serviços para hospedar repositórios Git na nuvem, facilitando a colaboração entre equipas de desenvolvimento.
• Pode enviar o seu repositório Git para o GitHub ou GitLab, tornando-
o acessível a outros colaboradores. Eles podem clonar o repositório, criar branches, fazer commits e solicitar pull requests para integrar suas alterações.
Formador: Cristóvão Costa 11
Controle de Conflitos: • Quando várias pessoas trabalham em um projeto Git e fazem alterações na mesma parte de um ficheiro, pode ocorrer um conflito. O Git fornece ferramentas para resolver esses conflitos.
• Dois desenvolvedores fazem alterações no mesmo ficheiro e na
mesma linha. Quando tentam mesclar (ou juntar) as suas alterações, o Git deteta um conflito e avisa-os para resolver manualmente, escolhendo quais as alterações manter.
Formador: Cristóvão Costa 12
Histórico e Visualização: • O Git oferece uma forma eficaz de visualizar o histórico de commits, ver quem fez quais alterações e quando, o que facilita a auditoria e a colaboração.
• Utiliza o comando git log para ver uma lista de todos os commits no projeto, os seus autores e as suas mensagens. Isto ajuda a entender o histórico das alterações.
Formador: Cristóvão Costa 13
Descentralização e Segurança: • Como o Git é distribuído, oferece maior segurança contra perda de dados, e cada cópia completa do repositório é uma cópia de segurança em si.
• Se o servidor central onde o repositório Git está hospedado sofrer
uma falha, cada programador ainda terá uma cópia completa do repositório nas suas máquinas, o que ajuda a evitar a perda de dados.
Formador: Cristóvão Costa 14
Resumo: • O Git é amplamente adotado em desenvolvimento de software, mas também pode ser útil para rastrear alterações em qualquer tipo de ficheiro. É uma ferramenta poderosa para colaboração e gestão de código-fonte em projetos de todos os tamanhos.
Formador: Cristóvão Costa 15
Git - Conceitos básicos ● repositório: pasta/local no qual o projeto é armazenado; ● clone: clona (copia) uma versão do repositório remoto do projeto para o local; ● branches (ramificações): útil no desenvolvimento coletivo, cada utilizador tem a sua no projeto de forma independente; ● pull: puxa as últimas alterações do repositório remoto para o repositório local; ● commit: controla a versão de um ficheiro registando uma mensagem que identifica as últimas alterações; ● push: envia (empurra) as últimas alterações do repositório local para o repositório remoto; ● merge: unifica (junta) branches diferentes; ● fork: cópia de um projeto para a sua conta do GitHub; ● pull request: solicitação de merge do seu branch num projeto de outra pessoa; ● rebase: segue o raciocínio do merge, mas apaga parte dos commits no histórico. Recomendado para utilização entre branches de desenvolvedores, não diretamente na principal;
Formador: Cristóvão Costa 16
Git - Comandos básicos ● git init: inicia o git no repositório local; ● git add: adiciona um ficheiro modificado ao stagging (área temporária); ● git status: mostra o status dos ficheiros modificados; ● git commit -m “mensagem”: cria um commit; ● git pull: puxa as atualizações mais recente (remoto -> local); ● git push: envia as atualizações mais recentes (local -> remoto); ● git remote add origin caminho: adiciona seu repositório local ao remoto; ● git checkout: nome-ficheiro: descarta as alterações locais do ficheiro informado.
Formador: Cristóvão Costa 17
GitHub Formador: Cristóvão Costa
Formador: Cristóvão Costa 18
• O GitHub é uma plataforma de hospedagem e colaboração de código- fonte baseada na web. É amplamente utilizado por programadores de software e equipas de programação para gerir projetos, controlar versões de código, colaborar em equipa e facilitar o desenvolvimento de software. • Seguem os principais aspetos e recursos do GitHub:
Formador: Cristóvão Costa 19
Repositórios: • O GitHub permite que os programadores criem repositórios Git na nuvem para armazenar seu código-fonte. Isto torna o código facilmente acessível de qualquer lugar com acesso à Internet.
Formador: Cristóvão Costa 20
Controle de Versão: • O GitHub é totalmente compatível com o Git e fornece ferramentas para rastrear e gerir alterações no código-fonte, permitindo que os programadores vejam quem fez o quê e quando.
Formador: Cristóvão Costa 21
Colaboração: • Equipas de desenvolvimento podem colaborar em projetos do GitHub. Vários programadores podem contribuir para um repositório, criar branches, fazer commits e mesclar suas alterações de forma eficiente.
Formador: Cristóvão Costa 22
Pull Requests: • O GitHub introduziu o conceito de "pull requests" (solicitações de recebimento), que são mecanismos para propor, rever e discutir alterações no código-fonte. São uma parte fundamental do processo de colaboração no GitHub.
Formador: Cristóvão Costa 23
Issues: • As "issues" são utilizadas para rastrear tarefas, melhorias, bugs e discussões em um projeto. Elas ajudam a manter um registo de todas as atividades relacionadas ao desenvolvimento.
Formador: Cristóvão Costa 24
Integração Contínua: • O GitHub suporta integração contínua (CI) e integração contínua de implantação (CD), permitindo que automatize a compilação, testes e implementação do seu software diretamente do GitHub.
Formador: Cristóvão Costa 25
Comunidade e Rede Social: • O GitHub é uma comunidade de programadores onde pode seguir outros programadores, projetos e empresas. Pode contribuir para projetos de código aberto e acompanhar o que está a acontecer em projetos de seu interesse.
Formador: Cristóvão Costa 26
Hospedagem de Páginas da Web: • O GitHub Pages é um serviço que permite hospedar páginas na web diretamente de repositórios do GitHub. Isto é útil para criar sites, documentação e portfólios.
Formador: Cristóvão Costa 27
Segurança e Controlo de Acesso: • O GitHub oferece recursos de segurança avançados, como autenticação de dois fatores, autorizações de acesso por equipa e auditoria de segurança.
Formador: Cristóvão Costa 28
Integrações e Extensões: • O GitHub oferece integrações com uma variedade de ferramentas e serviços de terceiros, permitindo estender suas funcionalidades, como integração com serviços de chat, monitoramento de erros e muito mais.
Formador: Cristóvão Costa 29
Resumo: • O GitHub desempenha um papel fundamental na colaboração de desenvolvimento de software e na promoção de projetos de código aberto. Muitos projetos de código aberto, bem como empresas e desenvolvedores individuais, utilizam o GitHub para hospedar, partilhar e colaborar nos seus projetos de software.