image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Article image
Marília Alves
Marília Alves17/08/2023 17:09
Share

Versionamento de Código com Git e GitHub

    Versionamento de código

    • Basicamente o versionamento de código controla as versões de um arquivo ao longo do tempo, registram o histórico de atualizações, gerenciam quais forma as alterações, por exemplo registrando a data, o autor etc., organizando o controle e a segurança do código, como determinando quem vai poder ter acesso a isso ou quem vai poder realizar alterações no código;

    Tipos de sistema de controle de versões (VCS):

    1. VCS centralizado (CUS; subversion): apenas um servidor vai conter todos os arquivos responsáveis pelo controle de versão, ele está diretamente ligado ao servidor, ou seja, estando desconectados a esse não conseguimos realizar nenhum tipo de mudança na versão;
    2. VCS distribuído (Git; mercurial): os repositórios de cada banco de versão é duplicado localmente, então é possível continuar editando as versões mesmo que você não esteja ligado diretamente ao servidor;
    • Como funciona o sistema: ele clona o repositório por completo, incluindo o histórico de versões, branches, commits e todas as informações do projeto, dessa forma cada clone funciona como um backup, possibilitando um fluxo de trabalho flexível e trazendo a oportunidade de trabalhar sem conexão a rede do servidor e depois sincronizar suas alterações quando estiver conectado novamente;

    Git

    • O git é um controle de versão distribuído, gratuito e de código aberto (open source), ele também permite que você crie ramificações (branches) independentes do projeto para trabalhar em funcionalidades ou correções separadamente do desenvolvimento principal, assim você evita possíveis conflitos e já que você pode testar essas ramificações ou novos recursos que você queira adicionar sem interferir no estado do código principal. Além disso, você pode criar, mesclar e excluir branches facilmente, facilitando a organização do trabalho em equipe e a manutenção de um fluxo de trabalho ordenado. E por ultimo o git também facilita a fusão de versões quando o trabalho em diferentes branches é concluído, ele leva de volta essas novas versões ao ramo principal (geralmente chamado de master ou mais);

    Fluxo do Git

    1. git clone → cria uma cópia idêntica de um repositório Git existente em uma nova pasta local;
    2. git config → usamos para configurar informações do usuário, como nome (user.nome) e e-mail (user.email), que são associadas aos commits que você faz, dessa forma quando você vê o histórico de commits com git log pode identificar quem fez as alterações em um repositório com base nas informações de nome e e-mail configuradas;
    3. git init → inicializa um novo repositório Git em um diretório (pasta), permitindo o controle de versão dos arquivos nesse local;
    4. git add → adiciona mudanças nos arquivos ao chamado "staging area", ou seja, a area de preparação, assim elas estão prontas para serem incluídas em um próximo commit;
    5. git commit → salva as mudanças no repositório como um novo ponto na história do projeto;
    6. git push → envia os commits locais para um repositório remoto, atualizando esse repositório com as alterações;
    7. git pull → Puxa as alterações de um repositório remoto para o repositório local, mantendo esse repositório atualizado;
    8. git branch → lista, cria ou exclui branches, para que possamos desenvolver funcionalidades ou correções separadas do projeto principal;
    9. git ignore → é usado para dizer ao Git quais arquivos ou pastas devem ser ignorados ao rastrear alterações em um repositório;
    10. git checkout → alterna entre diferentes branches ou pontos da história do projeto;
    11. git merge → combina as alterações de duas ou mais branches, incorporando-as em uma única branch, uma espécie de mesclagem dessas branches;
    12. git status → mostra o estado atual dos arquivos no diretório de trabalho, indicando quais foram modificados;
    13. git log → exibe o histórico de commits do projeto, mostrando quem fez as alterações e quando;
    14. git restore → retorna o arquivo para o ultimo status que foi salvo;
    15. git remote → gerencia as conexões com repositórios remotos, permitindo clonar, buscar ou enviar commits para eles;
    16. git diff → mostra as diferenças entre as mudanças não confirmadas e o último commit;
    17. git rebase → move ou reaplica commits de uma branch para outra, criando um histórico linear;
    18. git stash → armazena temporariamente as alterações não confirmadas, permitindo alternar de branch ou fazer atualizações;
    • git keep → ele não é um fluxo do git bash e sim um nome que será dado a um arquivo como uma forma de não deixar um diretório vazio, já que por padrão o Git não rastreia pastas vazias dessa forma você está indicando que deseja manter a pasta vazia no repositório;

    Gerar toking via Git Hub

    • Criar um token é como dar uma chave segura para que a clonagem dos repositórios via GitHub. Isso evita usar senhas e permite que você consiga dar permissões controladas, é uma maneira mais segura de trabalhar em equipe.

    Passo a passo para gerar um token no GitHub:

    1. Barra lateral direita (onde fica a sua foto do perfil);
    2. No final da barra clicar na opção settings;
    3. Develorper Settings;
    4. Personal access tokens;
    5. Generate new token;
    6. Generate new token classic;

    Como salvar credenciais na sua máquina para não precisar gerar novos tokens:

    1. git config --global credential.helper cache (nessa opção o token está salvo temporariamente);
    2. git config --global credential.helper store (nessa opção o token está salvo de maneira permanente);

    Autenticando token via SSH:

    • Esse protocolo trabalha com um par de chaves, onde temos uma chave pública e outra chave privada, a chave pública é armazenada no servidor (GitHub), enquanto a chave privada é mantida segura em sua máquina.

    Passo a passo para gerar um token via SSH no GitHub:

    1. Barra lateral direita (onde fica a sua foto do perfil);
    2. Access;
    3. SSH and GPG keys;

    Como salvar essa credencial na sua máquina:

    1. ssh-keygen -t rsa -b 4096 -C "seu_email@example.com"; (esse email precisa ser o email que você tem cadastrado no GitHub!)
    • Esse comando vai perguntar onde você deseja salvar a sua chave pressione enter para aceitar o local padrão ou especifique um local diferente;

    Clonando repositórios

    • O caminho para transformar um diretório global que não está sob controle de versão em um repositório git é o seguinte:
    1. crie uma pasta com o nome que você quer dar ao repositório: mkdir nome-da-pasta;
    2. entre na pasta criada: cd nome-da-pasta;
    3. inicialize um repositório Git no diretório (aqui você precisa estar dentro da pasta!): git init
    4. clone o repositório: git clone urldogithub
    5. se quiser clonar criando uma pasta especifica: git clone urldogithub nome-da-pasta
    6. conectar o repositório local ao repositório remoto: git remote add origin urldogithub

    Untracked files

    • São arquivos não rastreados, basicamente o git ainda não esta ciente desses arquivos e consequentemente não está monitorando para mudanças, então apesar dele se encontrar no diretório de trabalho ele não estava presente em nenhum commit anterior e também não esta na area de preparação. Quando você realizar o comando git status é assim que ele vai aparecer:

    image

    • Git reset
    1. Soft Reset → Um soft reset apenas move o branch (ramo) atual para um commit anterior, mas não faz alterações no diretório de trabalho ou no staging area. Isso significa que as alterações nos arquivos não são desfeitas e permanecem no diretório de trabalho e no staging area. É útil quando você deseja refazer um commit ou reorganizar o histórico de commits sem perder as alterações;
    2. Mixed Reset → é o comportamento padrão do git reset, ou seja, se nenhum valor for passado ao determinar o comando git reset ele vai ser aplicado automaticamente. Move o branch atual para um commit anterior e também atualiza o staging area para corresponder a esse commit. As alterações nos arquivos permanecem no diretório de trabalho, mas não estão preparadas para commit. Isso é útil quando você deseja reorganizar o histórico de commits e começar a preparar os arquivos para um novo commit;
    3. Hard Reset → um hard reset move o branch atual para um commit anterior, atualiza o staging area para corresponder a esse commit e remove todas as alterações dos arquivos no diretório de trabalho, restaurando-os ao estado do commit selecionado. Isso é útil quando você deseja descartar completamente as alterações e reverter para um estado anterior;

    Iniciou o repositório na pasta errada?

    Faça:

    1. rm -rf .git → ele vai remover o diretório git e todo seu conteúdo da pasta onde ele está, então atenção pois ****ao executar esse comando, você perderá todos os commits, rastreamento de versões e outras informações de controle de versão associadas a essa pasta. Portanto, certifique-se de que realmente deseja remover o repositório antes de usar esse comando. Certifique-se também de estar no diretório correto antes de executar o comando, pois ele não pode ser desfeito;

    Branch

    • Uma branch é uma ramificação do projeto que funciona como um ponteiro móvel para um commit específico no histórico do repositório. Ela permite que você desenvolva funcionalidades ou correções separadamente, sem afetar diretamente o código na branch principal;
    • Como criar:
    1. git checkout -b nome-da-branch
    • Como mesclar a branch com a main:
    1. git merge nome-da-branch

    GitHub

    • Plataforma de hospedagem de código para controle de versão com Git e colaboração entre desenvolvedores em projetos de software;
    Share
    Comments (4)
    Richardson
    Richardson - 17/08/2023 18:04

    muito bom, bem detalhado.

    Larissa Lopes
    Larissa Lopes - 17/08/2023 17:39

    show!!

    Geslucian Silva
    Geslucian Silva - 17/08/2023 17:18

    Top !!

    PS

    Paulo Santos - 17/08/2023 17:10

    Muito bom.