Giter VIP home page Giter VIP logo

demo-git-github's Introduction

logo header

Demo trabalhando com versionamento em seus projetos

🧾 Introdução

󠁐Projeto com objetivo de mostrar de forma básica o funcionamento do sistemas de controle de versão com Git, seus comandos de inicialização de repositório local, commits, push, merge, pull e muitos outros. Vou também demonstrar a conecxão com github via chave SSH, para poder subir os projetos para github.

📌 Installation

💬 Para trabalhar com controle de versão, você vai precisar:

Instalar o Git Criar uma conta no GitHub

⚡ Configurações de variaveis globais

💬 É importante nos identificarmos para o Git, Definindo nome de usuario e endereço de e-mail para os commits.

  • git config --global user.name "Fulano da Silva"
  • git config --global user.email [email protected]
  • Pode verificar todos dados com comando git config –list.

⚡ Comandos basicos para versionamento de repositório local para github

💬 Iniciando repositório local

  • O git init é o primeiro comando que devemos realizar para iniciar o controle de versão, pois é com este comando, que iniciamos o repositório local.
  • O git status verifica o status atual do repositório criado para o projeto.
  • O git log verifica e passa uma lista de todos commits realizado no repositório e com varios dados como hash do commit, autor, data branch.
  • O git add coloca os arquivos não preparados, monitorados na área de preparação staging area. E o add pode ser arquivo por arquivo git add name.txt ou todos git add ..
  • O git commit -m ":tada: Commit message" registra alterações no repositório git salvando uma mensagem de log junto com um id hash do commit.
    git init
    git status
    git log
    git add .
    git commit -m ":tada: first commit"

⚡ Conexão git e github com chave SSH

💬 Você pode usar SSH para realizar operações Git em repositórios em GitHub.com. Para obter mais informações, consulte Sobre SSH 🗝️ ou add ssh key. Se você tiver uma chave 🔑 SSH existente, poderá usá-la para autenticar operações do Git por SSH.

Com o Git Bash aberto execute:

    ssh-keygen -t ed25519 -C "[email protected]"

💬 Quando você for solicitado a Inserir um arquivo no qual salvar a chave, pressione Enter para aceitar o local padrão do arquivo.Observe que, se você criou chaves SSH anteriormente, o ssh-keygen pode solicitar que você reescreva outra chave; nesse caso, recomendo a criação de uma chave SSH com nome personalizado. Para fazer isso, digite o local padrão do arquivo e substitua id_ssh_keyname pelo nome de sua chave personalizada.

Por fim, precisa copiar a chave para depois ir em sua conta no github para criar a nova conexão SSH. Obs: O comando abaixo você precisa estar no diretório certo para fazer o copy.

    clip < ~/.ssh/id_ed25519.pub

📌 Padrões de commits

💬 De acordo com a documentação do Conventional Commits, commits semânticos são uma convenção simples para ser utilizada nas mensagens de commit. Essa convenção define um conjunto de regras para criar um histórico de commit explícito, o que facilita a criação de ferramentas automatizadas. Esses commits auxiliarão você e sua equipe a entenderem de forma facilitada quais alterações foram realizadas no trecho de código que foi commitado.

⚡ Tipo e descrição

💬 O commit semântico possui os elementos estruturais abaixo (tipos), que informam a intenção do seu commit ao utilizador(a) de seu código.

  • feat- Commits do tipo feat indicam que seu trecho de código está incluindo um novo recurso (se relaciona com o MINOR do versionamento semântico).

  • fix - Commits do tipo fix indicam que seu trecho de código commitado está solucionando um problema (bug fix), (se relaciona com o PATCH do versionamento semântico).

  • docs - Commits do tipo docs indicam que houveram mudanças na documentação, como por exemplo no Readme do seu repositório. (Não inclui alterações em código).

  • test - Commits do tipo test são utilizados quando são realizadas alterações em testes, seja criando, alterando ou excluindo testes unitários. (Não inclui alterações em código)

  • build - Commits do tipo build são utilizados quando são realizadas modificações em arquivos de build e dependências.

  • perf - Commits do tipo perf servem para identificar quaisquer alterações de código que estejam relacionadas a performance.

  • style - Commits do tipo style indicam que houveram alterações referentes a formatações de código, semicolons, trailing spaces, lint... (Não inclui alterações em código).

  • refactor - Commits do tipo refactor referem-se a mudanças devido a refatorações que não alterem sua funcionalidade, como por exemplo, uma alteração no formato como é processada determinada parte da tela, mas que manteve a mesma funcionalidade, ou melhorias de performance devido a um code review.

  • chore - Commits do tipo chore indicam atualizações de tarefas de build, configurações de administrador, pacotes... como por exemplo adicionar um pacote no gitignore. (Não inclui alterações em código)

  • ci - Commits do tipo ci indicam mudanças relacionadas a integração contínua (continuous integration).

⚡ Padrões de emojis

Tipo do commit Emoji Palavra-chave
Acessibilidade :wheelchair:
Adicionando um teste :white_check_mark: test
Adicionando uma dependência :heavy_plus_sign: build
Alterações de revisão de código 👌 :ok_hand: style
Animações e transições 💫 :dizzy:
Bugfix 🐛 :bug: fix
Comentários 💡 :bulb: docs
Commit inicial 🎉 :tada: init
Configuração 🔧 :wrench: chore
Deploy 🚀 :rocket:
Documentação 📚 :books: docs
Em progresso 🚧 :construction:
Estilização de interface 💄 :lipstick: feat
Infraestrutura 🧱 :bricks: ci
Lista de ideias (tasks) 🔜 :soon:
Mover/Renomear 🚚 :truck: chore
Novo recurso :sparkles: feat
Package.json em JS 📦 :package: build
Performance :zap: perf
Refatoração ♻️ :recycle: refactor
Removendo um arquivo 🔥 :fire:
Removendo uma dependência :heavy_minus_sign: build
Responsividade 📱 :iphone:
Revertendo mudanças 💥 :boom: fix
Segurança 🔒️ :lock:
SEO 🔍️ :mag:
Tag de versão 🔖 :bookmark:
Teste de aprovação ✔️ :heavy_check_mark: test
Testes 🧪 :test_tube: test
Texto 📝 :pencil:
Tipagem 🏷️ :label:
Tratamento de erros 🥅 :goal_net:

🧪 Exemplos

Comando Git Resultado no GitHub
git commit -m ":tada: Commit inicial" 🎉 Commit inicial
git commit -m ":books: docs: Atualizaçao do README" 📚 docs: Atualizaçao do README
git commit -m ":bug: fix: Loop infinito na linha 50" 🐛 fix: Loop infinito na linha 50
git commit -m ":sparkles: feat: Pagina de login" ✨ feat: Pagina de login
git commit -m ":bricks: ci: Modificaçao no Dockerfile" 🧱 ci: Modificaçao no Dockerfile
git commit -m ":recycle: refactor: Passando para arrow functions" ♻️ refactor: Passando para arrow functions
git commit -m ":zap: perf: Melhoria no tempo de resposta" ⚡ perf: Melhoria no tempo de resposta
git commit -m ":boom: fix: Revertendo mudanças ineficientes" 💥 fix: Revertendo mudanças ineficientes
git commit -m ":lipstick: feat: Estilizaçao CSS do formulario" 💄 feat: Estilizaçao CSS do formulario
git commit -m ":test_tube: test: Criando novo teste" 🧪 test: Criando novo teste
git commit -m ":bulb: docs: Comentários sobre a função LoremIpsum( )" 💡 docs: Comentários sobre a função LoremIpsum( )

🧾 Iniciando repositório local para subir no servidor github

⚡ Como clonar um repositório do servidor do github

💬 Adicionamos o comando git clone + ssh code do repositório github. Conforme abaixo, vamos baixar o projeto em um diretório.

    git clone [email protected]:RafaelBlum/demo-git-github.git

💬 Podemos também definir uma pasta ao clonar um repositório.

    git clone [email protected]:RafaelBlum/demo-git-github.git nomeDiretório

💬 Depois de cria a chave, basta criar um repositório no github e seguir os comandos abaixo.

    git remote add origin [email protected]:RafaelBlum/demo-git-github.git
    git branch -M main
    git push -u origin main

💬 Como enviar as alterações realizadas no seu projeto.

    git status
    git add .
    git commit -m "Alterações na feature x"
    git push

Mensagens de pré e pós commits

  • ✔️ Untracked files Arquivos não rastreados no controle de vesão
  • ✔️ Changes to be committed Arquivos rastreados no controle de versão
  • ✔️ Changes not staged for committed Arquivos rastreados, mas com alterações

Histórico de commits e alterações

    git log
    git reflog
    git log --stat
    git log --oneline

Alterando a mensagem do commit

  • Definindo -m você pode editar a mensagem sem abrir o editor
git commit --amend -m "mensagem de correção aqui"

Mostra o conteúdo que foi alterado, mas antes do commit

gif diff

Mostra arquivo que foi alterado, mas antes do commit

gif diff --name-only

Remove alterações realizadas em algum arquivo especifico

git checkout HEAD -- style.css

Como voltar para alguma alteração commitada voltar na sua linha do tempo

git reflog
git reset --hard id_commit

Revertendo um commit feito

  • É importante entender que git revert desfaz um único commit — ele não "reverte" ao estado anterior de um projeto removendo todos os commits subsequentes.
  • No Git, isso é chamado de redefinição, não de reversão.
git revert id_commit

⚡ Branchs

Trabalhando nas linhas do tempo.

time machine

💬 Como podemos ver, trabalhar com git é como se estivessemos em uma máquina do tempo, onde podemos voltar na nossa linha do tempo, o que chamamos de commits, voltando no inicio do projeto ou em qulquer momento.

Agora vamos utilizar outro poder do tempo, o poder de criar uma linha do tempo em paralelo, o que chamamos de branchs. Estas linhas, branchs, usamos quando vamos desenvolver uma feature nova ou quando vamos trabalhar em equipe, pois assim todos podemos trabalhar em uma parte do projeto sem que haja problemas em nosso projeto que está funcionando corretamente.

Desta forma, podemos ter um desenvolvedor trabalhando na branch 2, na página de produtos e outro desenvolvedor trabalhando na branch 1, com a Home.

Verificar qual branch esta ativo e quais existem

git branch

Como criar um branch linha do tempo

git branch new_feature

Como passar para uma branch linha do tempo

git checkout new_feature
git branch
ou podemos criar a branch e já passr para ela.
git checkout -b new_feature

time machine

💬 Agora temos duas linhas do tempo main e new_feature. Podemos subir mais uma Branch para github (remoto).

Git push origin branch-name

Remover uma branch remoto

Git push origin :branch-name

Remover branch local

Git branch –D branch-name

Como fazer Git Merge e pull

💬 Antes de fazer o merge é importante fazer um pull no projeto remoto Github, puxando e atulizando para o projeto local, pois pode acontecer de outro desenvolvedor tenha modificado algo, então na branch main.

git pull origin branch-name
git push --set-upstream origin branch-name

Agora sim, podemos fazer o merge

git branch
git merge branch_name

merge

Ex: Uma empresa pede para o desenvolvedor criar um sistema de login, mas ele não pode afetar o sistema principal ou o desenvolvimento dos outros desenvolvedores. E ao finalizar, ele deve passar seu código para um pull request.

Se você quiser criar um branch e fazer o checkout ao mesmo tempo, use o comando git checkout. O parâmetro -b especifica o nome do branch.

Criou um nova branch copiando a main

git checkout -b sistema-de-login main

Agora alteramos para a branch que queremos atualizar merge.

git checkout main
git pull
git merge sistema-de-login
git push

Depois de pronta a nova feature e enviada a branch nova para github, você no github, vai criar uma pull request que será aprovada ou não pela equipe.

merge

⚡ Pull - Trabalhando na mesma branch

💬 Algumas vezes podemos trabalhar na mesma branch e computadores dferentes ou com outros usuários e antes de iniciair, precisamos atualizar o código para o atual no github, conforme os commits forem sendo realizados.

O comando abaixo do git atualizar os arquivos do repositório remoto. Execute:

    git pull

Caso o git pull gere uma ❌mensagem❌

error:x:: Your local changes to the following files would be overwritten by merge ... Please commit your changes or stash them before you merge. Aborting

A ✔️ solução que pode ser feita: Utilizar um git stash para gravar o estado atual do seu repositório local, revertendo os arquivos para o estado atual do repositório remoto.

 git stash push --include-untracked

E agora sim o pull irá funcionar:

 git pull

💻 Comandos indice gerais

Comando Git Descrição
git init 🏷️ cria novo repositório local
git clone http://repositorio-exemple.git 🏷️ copia repositório local
git status 🏷️ Mostra arquivos alterados no diretório de trabalho
git diff 🏷️ mudanças em arquivos rastreados
git add . 🏷️ adiciona todas mudanças para o proximo commit
git add . -p < file > 🏷️ adiciona algumas mudanças destes arquivos para o commit
git commit -a 🏷️ Confirma todas alterações locais em arquivos rastreados
git commit 🏷️ comfirma alterações
git commit --amend 🏷️ muda o último commit
git log 🏷️ Mostra todos commit iniciando pelo mais novo
git log -p < file > 🏷️ mostra todas mudanças ao longo do tempo em um arquivo especific
git blade < file > 🏷️ Mostra que alterou, quem e quando
git branch -av 🏷️ Lista todas branchs existens
git checkout < branch > 🏷️ Muda para a branch selecionada
git branch < name-branch > 🏷️ cria uma branch
git branch -D name-branch 🏷️ deleta branch
git tag name 🏷️ cria uma tag
git tag 🏷️ mostra as tags, que representam algumas mudanças significativas no seu código
git push --tags 🏷️ publica todas tags criadas.

Contatos

Contatos 👇🏼 [[email protected]]

Youtube Badge Instagram Badge Twitter: universoCode Linkedin: RafaelBlum GitHub RafaelBlum


Adoro me conectar com pessoas diferentes, então se você quiser dizer oi, ficarei feliz em conhecê-lo mais! :)

demo-git-github's People

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.