Git e GitHub (Versionamento)
Slides
Rascunho Apresentação
- Uma apresentação sobre Git e GitHub Marcello Alexandre - Curso de Redes de Computadores
2. O que é git?
Se vocês já trabalharam em grupo sabem o quanto é complicado e até frustante compartilhar arquivos ainda mais quando se tem alterações constantes. Como solução para isso foram desenvolvidos os revisions controls , version control ou simplesmente, controle de versão.
O maior benefício de um controle de versão com certeza é a possibilidade de várias pessoas trabalharem em paralelo em um mesmo projeto sem precisar ficar enviando suas alterações para cada membro do time, se beneficiando desta excelente ferramenta para manter cópias de seus fontes, documentos, imagens e etc.
3. Como Toy Story 2 quase foi deletado para sempre por causa de um comando lá em 1998 um funcionario deu o seguinte comando rm -r -f * no sistema de arquivos assim deletando completamento o filme tentaram restaurar com backup mas falhou porem um supervisora do filme que estava gravida trabalhando em homeoffice possuia uma copia para trabalhar em seu escritorio assim sendo possivel salvar boa parte do trabalho.
4. Controle de versão é um sistema que registra alterações em um arquivo ou conjunto de arquivos ao longo do tempo para que você possa lembrar versões específicas mais tarde. O controle de versão oferece a possibilidade de reverter alterações realizadas se alguma coisa de ruim acontecer (sabemos que essa possibilidade é muito grande). Bem aqui a gente tem as logos de alguns dos principais controles de versão (SVN, Git e Mercurial) populares por serem as soluções livres. Essas soluções junto com algumas ferramentas fazem com que os controles de versão tornar-se um pouco mais fácil.
5. O SVN, ou Subversion , foi fundado em 2000 pela CollabNet, Incorporado sob a Licença Apache. O SVN é distribuído como código aberto e seu modelo utiliza um sistema de controle de versão centralizado, o que significa que todas as informações e arquivos são armazenados em um servidor central. Vinha pra ser o substituto do CVS(Concurrent Version System) ja foi um dos controle de versão com a maior adoção no mercado, vários projetos open-source usaram o subversion como repositório, dentre eles o Apache, Python, o Google Code tambem usa o Subversion exclusivamente para distribuir código e outros. porem sua ultima versão ja tem mais de 6 anos. Ele era bastante popular existindo diversos clients disponíveis, geralmente para os usuários de windows, o TortoiseSVN era o client mais recomendado, para os usuários de Mac o Version era a melhor opção.
6. Criado em 2005 por Linus Torvalds, o Git foi projetado para manter o desenvolvimento do Kernel Linux, e hoje é largamente utilizado pela comunidade de desenvolvedores, o Git oferece um controle de versão diferente, o Distributed Version Control, ou simplesmente, controle de versão distribuído, com esta forma de controle não existe um servidor central como no SVN por exemplo, que usa versão centralizada, o git é um controle de versão distribuído com foco na velocidade. O que ajudou a difusão foi a plataforma GitHub que vamos falar mais na frente. No site do git na sessão de livro(book) você pode encontrar o livro 'Pro Git' totalmente de graça e em portugues que explica tudo sobre o git escrito por Scott Chacon e Ben Straub link na referencia 'Começando-Sobre-Controle-de-Versão'
7. O Mercurial é outro controle de versão distribuído assim como o Git, ele foi desenvolvido por Matt Mackall em 2005 para projetos de grande porte, muito além dos projetos simples de designers e desenvolvedores independentes, obviamente isso não significa que times pequenos não possam utilizá-lo, o Mercurial é extremamente rápido e os criadores focaram na performance como recurso mais importante.
Além de ser muito rápido e escalável, o Mercurial é mais simples que o Git, não existem tantas funções para aprender e as funções são similares a outros CVS’s, além de ele vir equipado com uma interface web e ter uma excelente documentação. Foi implementado principalmente em python para rodar sobre linux sendo principalmente um programa de linha de comando mas hoje esta disponíveis em todas as principais plataformas e as funcionalidades do Mercurial pode ser aumentada com extensões oficiais ou da comunidade. SCM(source control management, Gerenciamento de código-fonte) usado para gerenciar o código fonte do Python, tambem é um software livre licenciado pela GNUGPLv2 tendo seus semelhantes o Git e o Bazaar. O projeto do Mercurial foi iniciado na mesma epoca do Git com o objetivo de ser um substituto para o software de controle de revisão BitKeeper.
8. GitHub é uma plataforma de hospedagem de código-fonte e arquivos com controle de versão usando o Git. O GitHub é muito popular atualmente hospeda mais de 100 milhões de repositórios, com a maior parte deles sendo projetos de código aberto. É amplamente usado por diversas empresas, sendo um dos clientes de Git GUI mais populares. Pode ver no site do git na aba downloads/guis GitHub é um serviço baseado em nuvem e que incorpora os recursos de controle de versão do Git, mas tambem é famosa na comunidade de programadores como uma especie de rede social voltada a profissionais de TI nela você pode seguir e aprender com outros programadores mais experientes gerando conexões riquissimas para estudantes, registrar projetos pessoais como uma especie de portfolio online.
Foi criado em 2007 por Chris Wanstrath, J. Hyett, Tom Preston-Werner e Scott Chacon porem foi vendido em 2018 para Microsoft por US$ 7,5 Bilhões.
9. GitHub Copilot O Copiloto GitHub é uma ferramenta de Inteligência artificial desenvolvida pela open.ai e o github que tens como objetivo de criar linhas de código automáticos ou através de comentários, O GitHub Copilot está disponível como uma extensão para Neovim, JetBrains e Visual Studio Code. e tem suporte a milhares de linguagens como: Python, JavaScript, TypeScript, Ruby, Java e Go, mas entende dezenas de linguagens e pode ajudá-lo a encontrar o caminho para quase tudo GitHub Pages Um serviço de hospedagem de site estático usuario.io
GitHub é apenas um dos mais populares serviços de repositorios eles tem ferramentas pagas e planos para geram sua renda e assim como qualquer serviçõs existe seus concorrentes outros como GitLab, BitBucket, SourceForge etc.
10.
Como utilizar o GitHub
Para utilizar o GitHub é necessário criar uma conta pessoal ou uma conta de equipe. O proprio github tem um tutorial bem basico para mostra o seu ambiento criando como exemplo sua primeira interação.
11. -Repositorio Repositório, ou repo, é um diretório onde os arquivos do seu projeto ficam armazenados, você pode armazenar códigos, imagens, áudios, ou qualquer outra coisa relacionada ao projeto no diretório.
12. -Branch Um branch é uma cópia de um repositório. Você pode utilizá-lo para desenvolver o seu projeto individualmente, sem alterar o diretório original. Assim, só depois de finalizado, será combinado novamente com o repositório original. Ao criar branches, ou ramificações, você gera versões diferentes de um repositório. Quando você modifica o projeto nas branches de recursos, um desenvolvedor pode ver como isso vai afetar o projeto principal na hora que tudo for integrado.
13. -Pull e Push -Commits Os Commits é como as mudanças salvas no GitHub são chamadas. Cada vez que você muda o arquivo do branch de recurso, você terá que executar um Commit para mantê-lo.
-pull request Para propor as mudanças que você acabou de fazer para outros desenvolvedores trabalhando no mesmo projeto, você deve criar um pull request. Pull Requests permitem que você veja as diferenças entre o projeto original e o seu branch de recurso. É assim que você pede para os seus pares revisá-las. Se os outros desenvolvedores aprovarem as modificações, eles podem executar um merge pull request (solicitação de mesclagem). Isso irá aplicar as mudanças para o projeto principal.
14.
-Merge Para unir as modificações feitas em um branch ao código original, utilizamos o comando merge. Com esta funcionalidade, todas as alterações feitas em cópias manipuláveis são inseridas, após aprovadas, no código-fonte original sem complicações.
15.
-Conteudos em videos
O willian justen liberou os videos dos cursos dele que eram pagos na udemy agora no youtube e de graça. Willian Justen Cursos - playlists dos cursos https://www.youtube.com/c/WillianJustenCursos Git e Github para Iniciantes - 30 videos curtos https://www.youtube.com/playlist?list=PLlAbYrWSYTiPA2iEiQ2PF_A9j__C4hi0A Git e Github na Vida Real - 45 videos curtos de no maximo 9min de duração https://www.youtube.com/playlist?list=PLlAbYrWSYTiNqugqFFWWsgONJsmc3eMpg
Canal da Rafaella Ballerini ela tem varios videos relacionado ao github, sobre o que é, como costumir perfil pra portifolio etc https://www.youtube.com/c/rafaellaballerini
Curso em video - Gustavo Guanabara https://www.youtube.com/playlist?list=PLHz_AreHm4dm7ZULPAmadvNhH6vk9oNZA
DevSuperior - Nelio Alves https://www.youtube.com/watch?v=_hZf1teRFNg
-Sites
Criado por Peter Cottle O LearnGitBranching é um visualizador de repositório git, sandbox e uma série de tutoriais e desafios educacionais. Seu objetivo principal é ajudar os desenvolvedores a entender o git através do poder da visualização (algo que está ausente ao trabalhar na linha de comando). Isso é conseguido através de um jogo com diferentes níveis para se familiarizar com os diferentes comandos do git. link do repositorio no github: https://github.com/pcottle/learnGitBranching link do jogo: https://pcottle.github.io/learnGitBranching/
referencias: https://blog.vandersonguidi.com.br/utilidade-publica/qual-o-melhor-controle-de-versao-subversiongitmercurial/
https://www.gitkraken.com/blog/git-vs-svn
https://www.independent.co.uk/arts-entertainment/films/news/lightyear-toy-story-2-deleted-b2017238.html
https://git-scm.com/
https://git-scm.com/book/pt-br/v2/Começando-Sobre-Controle-de-Versão
https://www.mercurial-scm.org/guide
https://subversion.apache.org/
https://www.hostinger.com.br/tutoriais/o-que-github
https://rockcontent.com/br/blog/o-que-e-github/
https://kenzie.com.br/blog/o-que-e-git/
https://www.youtube.com/c/WillianJustenCursos
https://osprogramadores.com/desafios/d01/