GitHub vs. Bitbucket
O GitHub não é o único serviço Git aprimorado hospedado, e o GitHub Enterprise não é o único produto local para empresas. O Atlassian Bitbucket compete com ambos, com preços ligeiramente mais baixos e com um nível de equipe gratuito de cinco membros que inclui repositórios privados ilimitados e o uso do Bitbucket Pipelines para integração contínua. O GitHub é um site mais popular para projetos de código aberto e tem um grupo muito maior de desenvolvedores de código aberto. O preço do Bitbucket costumava ser mais favorável para pequenas startups. Agora que o GitHub permite repositórios privados ilimitados em contas gratuitas e de equipe, esse não é mais o caso.
GitHub vs. GitLab
O GitLab compete com o GitHub e o Bitbucket, ambos hospedados e no local. Na superfície, o GitLab parece ter mais funcionalidade de ciclo de vida do que os outros, mas a diferença do Bitbucket desaparece principalmente se você incluir o Jira ao avaliar o Bitbucket. O GitLab oferece recursos de nuvem do plano Gold para projetos de código aberto gratuitamente, mas essa funcionalidade adicional não compensa realmente a comunidade maior de desenvolvedores de código aberto no GitHub.
Área de trabalho do GitHub
O GitHub Desktop, mostrado abaixo, facilita o gerenciamento dos seus repositórios GitHub.com e GitHub Enterprise. Embora não implemente todos os recursos da linha de comando do Git e da GUI da web do GitHub, ele implementa todas as operações que você fará diariamente a partir do seu desktop enquanto contribui para projetos. Normalmente, você clonará repositórios do GitHub para o GitHub Desktop, sincronizará conforme necessário, criará branches para seu trabalho, confirmará seu trabalho e, ocasionalmente, reverterá um ou mais commits.
Para trabalhar com repositórios para os quais você não tem privilégios de commit e colaboração, você normalmente começa bifurcando o repositório no GitHub e clonando o fork para seu desktop. Então você adiciona quaisquer branches que precisa no GitHub Desktop, faz commit de quaisquer alterações que desejar, testa seu trabalho, faz push dos commits de volta para seu repositório bifurcado remoto e, finalmente, gera um pull request para o projeto pai.
Você pode ver o botão Pull Request no canto superior direito da interface do GitHub Desktop. Você também pode ver muitos commits no projeto Neo4j que foram mesclagens de branches ou pull requests. Isso é típico de projetos de código aberto com poucos committers e muitos contribuidores.
GitHub para projetos de código aberto
Projetos de software de código aberto frequentemente precisam de maneiras de impor controle de qualidade enquanto ainda aceitam contribuições de fora da equipe principal de committers. A necessidade de contribuidores é enorme, mas trazer novos contribuidores para o projeto enquanto mantém a integridade da base de código é uma tarefa difícil e potencialmente perigosa. Ao mesmo tempo, a necessidade de feedback dos usuários do projeto também é enorme.
O GitHub tem uma série de mecanismos que podem ajudar a lubrificar as rodas dos projetos de código aberto. Por exemplo, os usuários podem adicionar problemas para o projeto no GitHub para relatar bugs ou solicitar recursos. Alguns outros sistemas chamam isso de ingressos. Gerentes de projeto que trabalham com problemas podem gerar listas de tarefas, atribuir problemas a colaboradores específicos, mencionar outros colaboradores interessados para que sejam notificados sobre alterações, adicionar rótulos e adicionar marcos.
Para contribuir com um projeto, você basicamente começa com um tópico cabeça branch que contém as alterações confirmadas que você deseja adicionar ao projeto base ramificar e inicializar um solicitação de pull do branch head, como mostrado abaixo. Então você faz push dos seus commits e os adiciona ao branch do projeto. Outros contribuidores podem revisar suas alterações propostas, adicionar comentários de revisão, contribuir para a discussão do pull request e adicionar seus próprios commits ao pull request.
Depois que todos os envolvidos estiverem satisfeitos com as alterações propostas, um committer pode mesclar o pull request. A mesclagem pode preservar todos os commits, compactar todas as alterações em um único commit ou rebasear os commits do branch head para o branch base. Se a mesclagem gerar conflitos, você pode resolvê-los no GitHub ou usando a linha de comando.
As revisões de código no GitHub permitem que uma equipe distribuída colabore de forma assíncrona. Ferramentas úteis do GitHub para revisores incluem diffs (a metade inferior da captura de tela abaixo), histórico (a metade superior) e blame view (uma maneira de visualizar a evolução de um commit de arquivo por commit). As discussões de código no GitHub vão para comentários que são apresentados de acordo com suas alterações de código. Se as ferramentas integradas não forem suficientes para seu projeto, você pode adicionar ferramentas de revisão de código e integração contínua do marketplace do GitHub. Os complementos do marketplace geralmente são gratuitos para projetos de código aberto.
Gists do GitHub
Gists são repositórios especiais do GitHub para compartilhar seu trabalho (público) ou para salvar trabalho para reutilização posterior (secreto). Eles podem conter arquivos únicos, partes de arquivos ou aplicativos completos. Você pode baixar gists, cloná-los, bifurcá-los e incorporá-los.
Gists públicos podem ser descobertos e encontrados em pesquisas. Você pode usar palavras-chave para restringir o que encontrar, incluindo prefixos para restringir os resultados a gists de usuários específicos, gists com pelo menos Não estrelas, gists com nomes de arquivos específicos e assim por diante.
Gists secretos não são pesquisáveis, mas qualquer um com a URL pode vê-los. Se você realmente quer que seu código seja protegido, use um repositório privado.
Como vimos, o GitHub fornece repositórios Git como um serviço, juntamente com recursos para revisão de código, gerenciamento de projetos, integrações com outras ferramentas de desenvolvedor, gerenciamento de equipe, codificação social e documentação. Embora o GitHub não seja o único produto em sua categoria, ele é o repositório dominante para desenvolvimento de software de código aberto.