image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Marília Pinheiro
Marília Pinheiro17/08/2023 17:09
Compartilhe
Microsoft 50 Anos - Prompts InteligentesRecomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes

Versionamento de Código com Git e GitHub

  • #GitHub
  • #Git

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;
Compartilhe
Recomendados para você
Microsoft 50 Anos - GitHub Copilot
Microsoft AI for Tech - GitHub Copilot
Microsoft 50 Anos - Prompts Inteligentes
Comentários (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.

Recomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes