Git, GitHub e GitLab: O que são, suas funcionalidades e curiosidades

O que você precisa saber a respeito das principais plataformas de integração de código do mercado atual.

ARTIGOS LINUX

Prof. Rodrigo Santos

8/20/20243 min read

Git, GitHub e GitLab:

Git

O que é: Git é um sistema de controle de versão distribuído, criado para gerenciar o desenvolvimento de projetos que podem envolver muitos arquivos e desenvolvedores. Ele permite acompanhar as mudanças no código-fonte ao longo do tempo, facilitando a colaboração entre desenvolvedores.

Para que serve: Git é usado principalmente para rastrear mudanças em arquivos de código-fonte, permitindo que múltiplos desenvolvedores trabalhem simultaneamente no mesmo projeto sem conflitos. Ele oferece ferramentas para fusão de código, reversão de alterações e ramificação de desenvolvimento, o que facilita a gestão de versões e a implementação de novas funcionalidades.

  • Controle de versão: Mantém um histórico detalhado de todas as alterações feitas no código.

  • Branches: Permite a criação de ramificações para desenvolver novas funcionalidades ou corrigir bugs sem afetar o código principal.

  • Merge: Combina diferentes branches, integrando mudanças de forma eficiente.

Curiosidades:

  • Git foi criado por Linus Torvalds, o mesmo criador do Linux, em 2005. Ele desenvolveu o Git após uma disputa de licenciamento com o BitKeeper, um sistema de controle de versão anterior.

  • O nome "Git" é um trocadilho, já que em inglês britânico, "git" é uma gíria para "pessoa desagradável". Torvalds escolheu esse nome humorístico porque ele mesmo se descreve como uma pessoa difícil.

Criador: Linus Torvalds

GitHub

O que é: GitHub é uma plataforma de hospedagem de repositórios Git na nuvem, oferecem funcionalidades adicionais como gerenciamento de projetos, revisão de código, e integração contínua. Ele se tornou uma rede social para desenvolvedores, onde se pode compartilhar e colaborar em projetos de código aberto.

Para que serve: GitHub é usado para armazenar repositórios Git, facilitar a colaboração entre desenvolvedores, revisar e comentar código, e automatizar processos de desenvolvimento através de integrações com outras ferramentas. Ele também é amplamente utilizado como portfólio por desenvolvedores para mostrar seu trabalho.

Curiosidades:

  • GitHub foi lançado em 2008 por Tom Preston-Werner, Chris Wanstrath, e PJ Hyett.

  • Em 2018, a Microsoft adquiriu o GitHub por 7,5 bilhões de dólares, o que gerou diversas reações na comunidade de desenvolvedores.

Criadores: Tom Preston-Werner, Chris Wanstrath, PJ Hyett

GitLab

O que é: GitLab é uma plataforma de DevOps que fornece um conjunto completo de ferramentas para desenvolvimento, integração contínua, entrega contínua, segurança e monitoramento de software. Assim como o GitHub, ele também oferece hospedagem de repositórios Git, mas com um foco maior em todo o ciclo de vida do desenvolvimento de software.

Para que serve: GitLab é utilizado para gerenciar e automatizar todo o ciclo de vida de desenvolvimento de software, desde o planejamento e codificação até a implantação e monitoramento. Ele oferece funcionalidades robustas para CI/CD (Integração e Entrega Contínuas), gerenciamento de segurança e controle de qualidade.

  • Repositórios: Armazena projetos de código-fonte.

  • Pull Requests: Facilita a revisão e integração de mudanças propostas por colaboradores.

  • Issues: Gerencia tarefas, bugs e novas funcionalidades.

  • GitHub Actions: Automatiza fluxos de trabalho de CI/CD (Integração e Entrega Contínua).

  • CI/CD Integrado: Ferramentas nativas para integração e entrega contínua.

  • DevOps: Suporte completo ao ciclo de vida do desenvolvimento, desde o planejamento até a monitorização.

  • Auto DevOps: Automatiza a configuração de pipelines de CI/CD.

Curiosidades:

  • GitLab foi criado em 2011 por Dmitriy Zaporozhets e Valery Sizov.

  • A plataforma é conhecida por seu modelo de desenvolvimento "open core", onde a base do código é aberta, mas algumas funcionalidades avançadas estão disponíveis apenas em versões pagas.

Criadores: Dmitriy Zaporozhets, Valery Sizov

O que é fluxos de trabalho de CI/CD?

Os fluxos de trabalho de CI/CD (Integração Contínua/Entrega Contínua) são práticas de desenvolvimento de software que visam automatizar e monitorar continuamente o ciclo de vida das aplicações, desde a integração e testes até a entrega e implantação

Integração Contínua (CI)

A Integração Contínua é a prática de integrar frequentemente mudanças de código em um repositório compartilhado. Cada integração é verificada por meio de testes automatizados para detectar erros rapidamente. Isso ajuda a garantir que o código integrado seja sempre funcional e estável.

Entrega Contínua (CD)

A Entrega Contínua vai um passo além, automatizando a entrega de mudanças de código para ambientes de produção. Isso significa que o código que passou pelos testes automatizados pode ser implantado em produção a qualquer momento, com pouca ou nenhuma intervenção manual.

Benefícios dos Fluxos de Trabalho de CI/CD

  • Automação: Reduz o trabalho manual e minimiza erros humanos.

  • Feedback Rápido: Identifica e corrige problemas rapidamente.

  • Entrega Rápida: Acelera o lançamento de novas funcionalidades e correções.

  • Colaboração: Facilita a colaboração entre desenvolvedores, testadores e operações.

Ferramentas Comuns

  • GitHub Actions: Automatiza fluxos de trabalho diretamente no GitHub.

  • GitLab CI/CD: Oferece pipelines integrados para CI/CD.

  • Jenkins: Uma ferramenta de automação open-source amplamente utilizada.

Esses fluxos de trabalho são essenciais para manter a qualidade e a eficiência no desenvolvimento de software moderno.

Conclusão

Git, GitHub e GitLab são ferramentas essenciais no desenvolvimento moderno de software. Git fornece a base para controle de versão, enquanto GitHub e GitLab estendem suas funcionalidades com hospedagem, colaboração e automação de processos. Cada uma dessas ferramentas tem suas particularidades e pontos fortes, tornando-as adequadas para diferentes necessidades e preferências de desenvolvimento.