{"id":1597,"date":"2026-10-05T15:16:36","date_gmt":"2026-10-05T18:16:36","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=1597"},"modified":"2026-10-06T10:40:54","modified_gmt":"2026-10-06T13:40:54","slug":"git-e-github-na-pratica","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/","title":{"rendered":"Git e GitHub \u2014 Li\u00e7\u00e3o 2: do Clone ao Pull Request"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Git e GitHub na pr\u00e1tica<\/strong>: Na li\u00e7\u00e3o anterior, aprendemos os principais conceitos do Git:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>reposit\u00f3rio;<\/li>\n\n\n\n<li>commit;<\/li>\n\n\n\n<li>staging area;<\/li>\n\n\n\n<li>HEAD;<\/li>\n\n\n\n<li>branch;<\/li>\n\n\n\n<li>merge;<\/li>\n\n\n\n<li>conflito de merge.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Agora vamos come\u00e7ar a trabalhar como um desenvolvedor realmente trabalha em um projeto hospedado no GitHub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O objetivo desta aula \u00e9 aprender este fluxo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GitHub\n   \u2193\ngit clone\n   \u2193\nCriar branch\n   \u2193\nModificar arquivos\n   \u2193\ngit add\n   \u2193\ngit commit\n   \u2193\ngit push\n   \u2193\nPull Request\n   \u2193\nCode Review\n   \u2193\nMerge\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esse \u00e9 um dos fluxos mais utilizados no desenvolvimento profissional.<\/p>\n\n\n\n<div class=\"markdown-heading\"><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Git_e_GitHub_na_pratica_1_O_que_vamos_dominar_hoje\" >Git e GitHub na pr\u00e1tica: 1. O que vamos dominar hoje<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#2_Repositorio_local_e_repositorio_remoto\" >2. Reposit\u00f3rio local e reposit\u00f3rio remoto<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Repositorio_local\" >Reposit\u00f3rio local<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Repositorio_remoto\" >Reposit\u00f3rio remoto<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#3_O_que_e_git_clone\" >3. O que \u00e9 git clone?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#4_Verificando_o_estado_do_projeto\" >4. Verificando o estado do projeto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#5_Conhecendo_o_remote_origin\" >5. Conhecendo o remote origin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#6_Antes_de_trabalhar_atualize_seu_projeto\" >6. Antes de trabalhar, atualize seu projeto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#7_Evite_desenvolver_tudo_diretamente_na_main\" >7. Evite desenvolver tudo diretamente na main<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#8_Convencoes_para_nomes_de_branches\" >8. Conven\u00e7\u00f5es para nomes de branches<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Novas_funcionalidades\" >Novas funcionalidades<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Correcoes\" >Corre\u00e7\u00f5es<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Documentacao\" >Documenta\u00e7\u00e3o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Refatoracoes\" >Refatora\u00e7\u00f5es<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#9_Fazendo_alteracoes\" >9. Fazendo altera\u00e7\u00f5es<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#10_Analisando_exatamente_o_que_mudou\" >10. Analisando exatamente o que mudou<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#11_Adicionando_alteracoes_ao_Stage\" >11. Adicionando altera\u00e7\u00f5es ao Stage<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Verificando_o_que_ja_esta_no_Stage\" >Verificando o que j\u00e1 est\u00e1 no Stage<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#12_Criando_um_bom_commit\" >12. Criando um bom commit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#13_Verificando_o_historico\" >13. Verificando o hist\u00f3rico<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#14_O_commit_ainda_nao_esta_no_GitHub\" >14. O commit ainda n\u00e3o est\u00e1 no GitHub<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#15_O_que_e_git_push\" >15. O que \u00e9 git push?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#16_O_que_significa_-u\" >16. O que significa -u?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#17_Agora_entra_o_Pull_Request\" >17. Agora entra o Pull Request<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Pull_Request\" >Pull Request<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#18_Anatomia_de_um_Pull_Request\" >18. Anatomia de um Pull Request<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Titulo\" >T\u00edtulo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Descricao\" >Descri\u00e7\u00e3o<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#19_Code_Review\" >19. Code Review<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#20_Merge_do_Pull_Request\" >20. Merge do Pull Request<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Create_a_merge_commit\" >Create a merge commit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Squash_and_merge\" >Squash and merge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Rebase_and_merge\" >Rebase and merge<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#21_Depois_do_merge\" >21. Depois do merge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#22_Fluxo_profissional_completo\" >22. Fluxo profissional completo<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Atualize_a_branch_principal\" >Atualize a branch principal<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Crie_uma_branch\" >Crie uma branch<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Desenvolva_e_confira\" >Desenvolva e confira<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Prepare_as_alteracoes\" >Prepare as altera\u00e7\u00f5es<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Revise_o_Stage\" >Revise o Stage<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Crie_o_commit\" >Crie o commit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Envie_a_branch\" >Envie a branch<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#No_GitHub\" >No GitHub<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Depois_do_merge\" >Depois do merge<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#23_Fluxo_visual_resumido\" >23. Fluxo visual resumido<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#24_Comandos_que_voce_deve_dominar_ate_aqui\" >24. Comandos que voc\u00ea deve dominar at\u00e9 aqui<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#25_Exercicio_pratico\" >25. Exerc\u00edcio pr\u00e1tico<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#26_Desafio_extra\" >26. Desafio extra<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#27_Erros_comuns_de_quem_esta_comecando\" >27. Erros comuns de quem est\u00e1 come\u00e7ando<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Fazer_tudo_diretamente_na_main\" >Fazer tudo diretamente na main<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-51\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Criar_um_unico_commit_gigantesco\" >Criar um \u00fanico commit gigantesco<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-52\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Usar_git_add_sem_olhar_o_que_mudou\" >Usar git add . sem olhar o que mudou<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-53\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Achar_que_commit_ja_enviou_o_codigo_ao_GitHub\" >Achar que commit j\u00e1 enviou o c\u00f3digo ao GitHub<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-54\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Confundir_Git_com_GitHub\" >Confundir Git com GitHub<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-55\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#28_Checklist_antes_de_abrir_um_Pull_Request\" >28. Checklist antes de abrir um Pull Request<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-56\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#29_Proximas_etapas_para_masterizar_Git_e_GitHub\" >29. Pr\u00f3ximas etapas para masterizar Git e GitHub<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-57\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#30_Resumo_da_licao\" >30. Resumo da li\u00e7\u00e3o<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-58\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Controlando_versoes_com_Git_e_GitHub\" >Controlando vers\u00f5es com Git e GitHub<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-59\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Git_e_GitHub_Seu_Codigo_Versionado_Aprenda_de_uma_vez_por_todas_e_sem_enrolacao_Programacao_para_Iniciantes\" >Git e GitHub: Seu C\u00f3digo Versionado: Aprenda de uma vez por todas e sem enrola\u00e7\u00e3o (Programa\u00e7\u00e3o para Iniciantes)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-60\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/git-e-github-na-pratica\/#Git_GitHub_Descomplicados_Do_zero_ao_avancado_um_guia_passo_a_passo_para_dominar_versionamento_colaboracao_e_desenvolvimento_moderno\" >Git &#038; GitHub Descomplicados: Do zero ao avan\u00e7ado: um guia passo a passo para dominar versionamento, colabora\u00e7\u00e3o e desenvolvimento moderno<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Git_e_GitHub_na_pratica_1_O_que_vamos_dominar_hoje\"><\/span>Git e GitHub na pr\u00e1tica: 1. O que vamos dominar hoje<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-1-o-que-vamos-dominar-hoje\" class=\"anchor\" aria-label=\"Permalink: 1. O que vamos dominar hoje\" href=\"#1-o-que-vamos-dominar-hoje\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Nesta li\u00e7\u00e3o, voc\u00ea aprender\u00e1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a diferen\u00e7a entre reposit\u00f3rio local e remoto;<\/li>\n\n\n\n<li>como clonar um projeto do GitHub;<\/li>\n\n\n\n<li>como verificar o estado do reposit\u00f3rio;<\/li>\n\n\n\n<li>o que \u00e9 o remote <code>origin<\/code>;<\/li>\n\n\n\n<li>como atualizar a branch principal;<\/li>\n\n\n\n<li>como criar branches de trabalho;<\/li>\n\n\n\n<li>como analisar altera\u00e7\u00f5es antes do commit;<\/li>\n\n\n\n<li>como usar o Staging Area;<\/li>\n\n\n\n<li>como criar commits claros;<\/li>\n\n\n\n<li>como enviar uma branch para o GitHub;<\/li>\n\n\n\n<li>como criar um Pull Request;<\/li>\n\n\n\n<li>como funciona um Code Review;<\/li>\n\n\n\n<li>como fazer o merge;<\/li>\n\n\n\n<li>como limpar branches depois da integra\u00e7\u00e3o;<\/li>\n\n\n\n<li>como executar o fluxo completo de trabalho.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A meta \u00e9 sair desta aula entendendo o caminho completo entre <strong>seu computador, o Git e o GitHub<\/strong>.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"2_Repositorio_local_e_repositorio_remoto\"><\/span>2. Reposit\u00f3rio local e reposit\u00f3rio remoto<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-2-reposit\u00f3rio-local-e-reposit\u00f3rio-remoto\" class=\"anchor\" aria-label=\"Permalink: 2. Reposit\u00f3rio local e reposit\u00f3rio remoto\" href=\"#2-reposit%C3%B3rio-local-e-reposit%C3%B3rio-remoto\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de continuar, precisamos entender uma diferen\u00e7a muito importante.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Repositorio_local\"><\/span>Reposit\u00f3rio local<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-reposit\u00f3rio-local\" class=\"anchor\" aria-label=\"Permalink: Reposit\u00f3rio local\" href=\"#reposit%C3%B3rio-local\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 o reposit\u00f3rio que est\u00e1 no seu computador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\projetos\\meu-sistema\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 nele que voc\u00ea:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>modifica arquivos;<\/li>\n\n\n\n<li>cria commits;<\/li>\n\n\n\n<li>cria branches;<\/li>\n\n\n\n<li>visualiza o hist\u00f3rico;<\/li>\n\n\n\n<li>testa suas altera\u00e7\u00f5es.<\/li>\n<\/ul>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Repositorio_remoto\"><\/span>Reposit\u00f3rio remoto<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-reposit\u00f3rio-remoto\" class=\"anchor\" aria-label=\"Permalink: Reposit\u00f3rio remoto\" href=\"#reposit%C3%B3rio-remoto\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 uma c\u00f3pia do reposit\u00f3rio armazenada em algum servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No nosso caso:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GitHub\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Um endere\u00e7o poderia ser:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;github.com\/usuario\/meu-projeto\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Portanto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SEU COMPUTADOR                      GITHUB\n\nReposit\u00f3rio local  \u2190\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2192  Reposit\u00f3rio remoto\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Git e GitHub n\u00e3o s\u00e3o a mesma coisa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Git<\/strong> controla as vers\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GitHub<\/strong> hospeda reposit\u00f3rios Git e oferece ferramentas para colabora\u00e7\u00e3o.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"3_O_que_e_git_clone\"><\/span>3. O que \u00e9 <code>git clone<\/code>?<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-3-o-que-\u00e9-git-clone\" class=\"anchor\" aria-label=\"Permalink: 3. O que \u00e9 git clone?\" href=\"#3-o-que-%C3%A9-git-clone\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine que encontramos um projeto no GitHub e queremos trabalhar nele.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Precisamos trazer esse projeto para nosso computador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usamos:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git clone URL_DO_REPOSITORIO<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git clone https:\/\/github.com\/usuario\/meu-projeto.git<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O Git ir\u00e1:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>baixar os arquivos;<\/li>\n\n\n\n<li>baixar o hist\u00f3rico de commits;<\/li>\n\n\n\n<li>baixar as refer\u00eancias do reposit\u00f3rio;<\/li>\n\n\n\n<li>configurar automaticamente o reposit\u00f3rio remoto.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre><span class=\"pl-c1\">cd<\/span> meu-projeto<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora estamos dentro do projeto.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"4_Verificando_o_estado_do_projeto\"><\/span>4. Verificando o estado do projeto<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-4-verificando-o-estado-do-projeto\" class=\"anchor\" aria-label=\"Permalink: 4. Verificando o estado do projeto\" href=\"#4-verificando-o-estado-do-projeto\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Um dos comandos que voc\u00ea mais utilizar\u00e1 no Git \u00e9:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git status<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ele responde perguntas como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Qual branch estou usando?<\/li>\n\n\n\n<li>Existem arquivos modificados?<\/li>\n\n\n\n<li>Existem arquivos novos?<\/li>\n\n\n\n<li>Existem altera\u00e7\u00f5es no Staging Area?<\/li>\n\n\n\n<li>Existem commits ainda n\u00e3o enviados?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>On branch main\n\nChanges not staged for commit:\n    modified: index.html\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Isso significa:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">O arquivo <code>index.html<\/code> foi modificado, mas ainda n\u00e3o foi colocado no Stage.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Use <code>git status<\/code> constantemente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma excelente rotina \u00e9 executar:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git status<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">antes e depois de opera\u00e7\u00f5es importantes.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"5_Conhecendo_o_remote_origin\"><\/span>5. Conhecendo o remote <code>origin<\/code>\n<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-5-conhecendo-o-remote-origin\" class=\"anchor\" aria-label=\"Permalink: 5. Conhecendo o remote origin\" href=\"#5-conhecendo-o-remote-origin\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Quando fazemos um <code>git clone<\/code>, o Git normalmente cria automaticamente um remote chamado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>origin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos verificar:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git remote<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>origin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para descobrir para onde ele aponta:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git remote -v<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Resultado parecido com:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>origin  https:\/\/github.com\/usuario\/meu-projeto.git (fetch)\norigin  https:\/\/github.com\/usuario\/meu-projeto.git (push)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pense no <code>origin<\/code> como um apelido para o endere\u00e7o do reposit\u00f3rio remoto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em vez de escrever:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;github.com\/usuario\/meu-projeto.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">constantemente, usamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>origin\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"6_Antes_de_trabalhar_atualize_seu_projeto\"><\/span>6. Antes de trabalhar, atualize seu projeto<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-6-antes-de-trabalhar-atualize-seu-projeto\" class=\"anchor\" aria-label=\"Permalink: 6. Antes de trabalhar, atualize seu projeto\" href=\"#6-antes-de-trabalhar-atualize-seu-projeto\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine que voc\u00ea trabalhou ontem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enquanto estava fora, outro desenvolvedor modificou o projeto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se come\u00e7ar a trabalhar usando sua vers\u00e3o antiga, poder\u00e1 criar conflitos desnecess\u00e1rios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por isso, antes de come\u00e7ar, normalmente voltamos para a branch principal e a atualizamos:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch main\ngit pull origin main<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Em instala\u00e7\u00f5es ou projetos que ainda usam o comando cl\u00e1ssico, tamb\u00e9m podemos encontrar:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git checkout main\ngit pull origin main<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O <code>git pull<\/code> busca altera\u00e7\u00f5es do reposit\u00f3rio remoto e as integra \u00e0 branch local conforme a configura\u00e7\u00e3o do Git.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Visualmente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GitHub\n  \u2193\nBuscar altera\u00e7\u00f5es\n  \u2193\nIntegrar na branch local\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"7_Evite_desenvolver_tudo_diretamente_na_main\"><\/span>7. Evite desenvolver tudo diretamente na <code>main<\/code>\n<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-7-evite-desenvolver-tudo-diretamente-na-main\" class=\"anchor\" aria-label=\"Permalink: 7. Evite desenvolver tudo diretamente na main\" href=\"#7-evite-desenvolver-tudo-diretamente-na-main\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Em projetos profissionais, normalmente evitamos desenvolver uma funcionalidade diretamente na branch principal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine que precisamos criar uma tela de login.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro atualizamos a <code>main<\/code>:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch main\ngit pull origin main<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois criamos nossa branch:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch -c feature\/login<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esse comando faz duas coisas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Cria a branch feature\/login\n+\nMuda para ela\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Equivale a:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git branch feature\/login\ngit switch feature\/login<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git branch<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">poderia mostrar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>* feature\/login\n  main\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O <code>*<\/code> indica a branch atual.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"8_Convencoes_para_nomes_de_branches\"><\/span>8. Conven\u00e7\u00f5es para nomes de branches<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-8-conven\u00e7\u00f5es-para-nomes-de-branches\" class=\"anchor\" aria-label=\"Permalink: 8. Conven\u00e7\u00f5es para nomes de branches\" href=\"#8-conven%C3%A7%C3%B5es-para-nomes-de-branches\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Use nomes que indiquem claramente o objetivo.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Novas_funcionalidades\"><\/span>Novas funcionalidades<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-novas-funcionalidades\" class=\"anchor\" aria-label=\"Permalink: Novas funcionalidades\" href=\"#novas-funcionalidades\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>feature\/login\nfeature\/cadastro-cliente\nfeature\/pagamento-pix\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Correcoes\"><\/span>Corre\u00e7\u00f5es<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-corre\u00e7\u00f5es\" class=\"anchor\" aria-label=\"Permalink: Corre\u00e7\u00f5es\" href=\"#corre%C3%A7%C3%B5es\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>fix\/login\nfix\/calculo-imposto\nfix\/erro-cadastro\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Documentacao\"><\/span>Documenta\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-documenta\u00e7\u00e3o\" class=\"anchor\" aria-label=\"Permalink: Documenta\u00e7\u00e3o\" href=\"#documenta%C3%A7%C3%A3o\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>docs\/readme\ndocs\/instalacao\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Refatoracoes\"><\/span>Refatora\u00e7\u00f5es<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-refatora\u00e7\u00f5es\" class=\"anchor\" aria-label=\"Permalink: Refatora\u00e7\u00f5es\" href=\"#refatora%C3%A7%C3%B5es\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>refactor\/autenticacao\nrefactor\/servico-email\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Assim, somente vendo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>feature\/pagamento-pix\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">j\u00e1 sabemos o que est\u00e1 sendo desenvolvido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o existe uma \u00fanica conven\u00e7\u00e3o obrigat\u00f3ria para todos os projetos. O mais importante \u00e9 que a equipe escolha um padr\u00e3o e o utilize de forma consistente.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"9_Fazendo_alteracoes\"><\/span>9. Fazendo altera\u00e7\u00f5es<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-9-fazendo-altera\u00e7\u00f5es\" class=\"anchor\" aria-label=\"Permalink: 9. Fazendo altera\u00e7\u00f5es\" href=\"#9-fazendo-altera%C3%A7%C3%B5es\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora podemos modificar o projeto normalmente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine que criamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LoginController.java\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">E modificamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UsuarioService.java\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verificamos:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git status<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O Git poder\u00e1 informar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Untracked files:\n    LoginController.java\n\nChanges not staged for commit:\n    UsuarioService.java\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Temos duas situa\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>LoginController.java<\/code> \u00e9 novo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>UsuarioService.java<\/code> j\u00e1 existia e foi alterado.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"10_Analisando_exatamente_o_que_mudou\"><\/span>10. Analisando exatamente o que mudou<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-10-analisando-exatamente-o-que-mudou\" class=\"anchor\" aria-label=\"Permalink: 10. Analisando exatamente o que mudou\" href=\"#10-analisando-exatamente-o-que-mudou\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de adicionar tudo ao Stage, podemos analisar as modifica\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git diff<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O Git mostrar\u00e1 algo semelhante a:<\/p>\n\n\n\n<div class=\"highlight highlight-source-diff\"><pre><span class=\"pl-md\"><span class=\"pl-md\">-<\/span> return false;<\/span>\n<span class=\"pl-mi1\"><span class=\"pl-mi1\">+<\/span> return usuario != null;<\/span><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Linhas removidas aparecem com:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Linhas adicionadas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>+\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Isso \u00e9 extremamente importante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de criar um commit, acostume-se a perguntar:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">O que exatamente estou colocando neste commit?<\/p>\n<\/blockquote>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"11_Adicionando_alteracoes_ao_Stage\"><\/span>11. Adicionando altera\u00e7\u00f5es ao Stage<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-11-adicionando-altera\u00e7\u00f5es-ao-stage\" class=\"anchor\" aria-label=\"Permalink: 11. Adicionando altera\u00e7\u00f5es ao Stage\" href=\"#11-adicionando-altera%C3%A7%C3%B5es-ao-stage\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos adicionar um arquivo espec\u00edfico:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add LoginController.java<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Outro:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add UsuarioService.java<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ou todas as altera\u00e7\u00f5es do diret\u00f3rio atual:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add <span class=\"pl-c1\">.<\/span><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git status<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora aparecer\u00e3o como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Changes to be committed\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Significa:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Essas altera\u00e7\u00f5es est\u00e3o preparadas para entrar no pr\u00f3ximo commit.<\/p>\n<\/blockquote>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Verificando_o_que_ja_esta_no_Stage\"><\/span>Verificando o que j\u00e1 est\u00e1 no Stage<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-verificando-o-que-j\u00e1-est\u00e1-no-stage\" class=\"anchor\" aria-label=\"Permalink: Verificando o que j\u00e1 est\u00e1 no Stage\" href=\"#verificando-o-que-j%C3%A1-est%C3%A1-no-stage\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Existe uma diferen\u00e7a importante entre:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git diff<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">e:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git diff --staged<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O primeiro mostra altera\u00e7\u00f5es ainda n\u00e3o adicionadas ao Stage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O segundo mostra o que est\u00e1 preparado para o pr\u00f3ximo commit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de commitar, vale a pena executar:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git diff --staged<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"12_Criando_um_bom_commit\"><\/span>12. Criando um bom commit<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-12-criando-um-bom-commit\" class=\"anchor\" aria-label=\"Permalink: 12. Criando um bom commit\" href=\"#12-criando-um-bom-commit\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora fazemos:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git commit -m <span class=\"pl-s\"><span class=\"pl-pds\">\"<\/span>Adiciona autentica\u00e7\u00e3o de usu\u00e1rios<span class=\"pl-pds\">\"<\/span><\/span><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Evite mensagens como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>altera\u00e7\u00e3o\nteste\ncoisas\najustes\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Prefira:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Adiciona autentica\u00e7\u00e3o de usu\u00e1rios\nCorrige valida\u00e7\u00e3o de e-mail\nRemove c\u00f3digo duplicado do servi\u00e7o de login\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Um bom hist\u00f3rico poderia parecer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a82fd91 Adiciona autentica\u00e7\u00e3o de usu\u00e1rios\n8dc221a Corrige valida\u00e7\u00e3o de senha\n751c891 Adiciona testes do servi\u00e7o de login\n52a912c Cria estrutura inicial do projeto\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Isso transforma o hist\u00f3rico em documenta\u00e7\u00e3o.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"13_Verificando_o_historico\"><\/span>13. Verificando o hist\u00f3rico<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-13-verificando-o-hist\u00f3rico\" class=\"anchor\" aria-label=\"Permalink: 13. Verificando o hist\u00f3rico\" href=\"#13-verificando-o-hist%C3%B3rico\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Para visualizar os commits:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git log<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea ver\u00e1 informa\u00e7\u00f5es como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>commit a82fd91...\nAuthor: Michel\nDate: ...\n\nAdiciona autentica\u00e7\u00e3o de usu\u00e1rios\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Uma forma mais compacta:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git log --oneline<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a82fd91 Adiciona autentica\u00e7\u00e3o de usu\u00e1rios\n8dc221a Corrige valida\u00e7\u00e3o de senha\n751c891 Adiciona testes do servi\u00e7o de login\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Outra visualiza\u00e7\u00e3o muito \u00fatil:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git log --oneline --graph --all<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>* a82fd91 Adiciona autentica\u00e7\u00e3o\n* 8dc221a Corrige senha\n| * 77f3911 Adiciona relat\u00f3rio\n|\/\n* 751c891 Estrutura inicial\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui come\u00e7amos a enxergar visualmente as branches.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"14_O_commit_ainda_nao_esta_no_GitHub\"><\/span>14. O commit ainda n\u00e3o est\u00e1 no GitHub<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-14-o-commit-ainda-n\u00e3o-est\u00e1-no-github\" class=\"anchor\" aria-label=\"Permalink: 14. O commit ainda n\u00e3o est\u00e1 no GitHub\" href=\"#14-o-commit-ainda-n%C3%A3o-est%C3%A1-no-github\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esse \u00e9 um erro comum entre iniciantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando fazemos:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git commit<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">o commit foi criado no reposit\u00f3rio local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Temos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Computador\n\nA --- B --- C\n          \u2191\n        novo commit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mas o GitHub talvez ainda esteja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GitHub\n\nA --- B\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Precisamos enviar o commit.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"15_O_que_e_git_push\"><\/span>15. O que \u00e9 <code>git push<\/code>?<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-15-o-que-\u00e9-git-push\" class=\"anchor\" aria-label=\"Permalink: 15. O que \u00e9 git push?\" href=\"#15-o-que-%C3%A9-git-push\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Usamos:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git push<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Na primeira vez que enviamos uma nova branch:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git push -u origin feature\/login<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Isso significa aproximadamente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Envie minha branch feature\/login\npara o remote origin.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depois disso, normalmente podemos simplesmente executar:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git push<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COMPUTADOR                         GITHUB\n\nfeature\/login                     feature\/login\n\nA---B---C        \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2192         A---B---C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nossa branch existe tamb\u00e9m no GitHub.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"16_O_que_significa_-u\"><\/span>16. O que significa <code>-u<\/code>?<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-16-o-que-significa--u\" class=\"anchor\" aria-label=\"Permalink: 16. O que significa -u?\" href=\"#16-o-que-significa--u\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">No comando:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git push -u origin feature\/login<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-u\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00e9 uma forma curta de:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--set-upstream\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ele configura uma rela\u00e7\u00e3o entre a branch local e a branch remota.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois o Git passa a saber que:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>feature\/login local\n        \u2193\norigin\/feature\/login\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">est\u00e3o relacionadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o futuramente podemos usar apenas:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git push<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">e, quando apropriado:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git pull<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"17_Agora_entra_o_Pull_Request\"><\/span>17. Agora entra o Pull Request<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-17-agora-entra-o-pull-request\" class=\"anchor\" aria-label=\"Permalink: 17. Agora entra o Pull Request\" href=\"#17-agora-entra-o-pull-request\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que terminamos nossa funcionalidade, podemos ter algo assim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>main\n |\n A---B---C\n      \\\n       D---E---F\n             feature\/login\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o queremos simplesmente integrar tudo \u00e0 <code>main<\/code> sem revis\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No GitHub criamos um:<\/p>\n\n\n\n<div class=\"markdown-heading\"><h1 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Pull_Request\"><\/span>Pull Request<span class=\"ez-toc-section-end\"><\/span><\/h1><a id=\"user-content-pull-request\" class=\"anchor\" aria-label=\"Permalink: Pull Request\" href=\"#pull-request\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Tamb\u00e9m chamado de:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PR\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Um Pull Request significa aproximadamente:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Eu fiz estas altera\u00e7\u00f5es nesta branch. Gostaria que elas fossem analisadas e integradas \u00e0 branch de destino.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">O Pull Request \u00e9 uma funcionalidade do GitHub e de plataformas semelhantes. Ele n\u00e3o \u00e9 um comando do Git.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"18_Anatomia_de_um_Pull_Request\"><\/span>18. Anatomia de um Pull Request<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-18-anatomia-de-um-pull-request\" class=\"anchor\" aria-label=\"Permalink: 18. Anatomia de um Pull Request\" href=\"#18-anatomia-de-um-pull-request\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente um PR possui:<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Titulo\"><\/span>T\u00edtulo<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-t\u00edtulo\" class=\"anchor\" aria-label=\"Permalink: T\u00edtulo\" href=\"#t%C3%ADtulo\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Adiciona autentica\u00e7\u00e3o de usu\u00e1rios\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Descricao\"><\/span>Descri\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-descri\u00e7\u00e3o\" class=\"anchor\" aria-label=\"Permalink: Descri\u00e7\u00e3o\" href=\"#descri%C3%A7%C3%A3o\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Explique:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>o que foi feito;<\/li>\n\n\n\n<li>por que foi feito;<\/li>\n\n\n\n<li>como testar;<\/li>\n\n\n\n<li>poss\u00edveis impactos.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Implementa autentica\u00e7\u00e3o de usu\u00e1rios utilizando\ne-mail e senha.\n\nAltera\u00e7\u00f5es:\n\n- adiciona LoginController;\n- adiciona valida\u00e7\u00e3o de credenciais;\n- adiciona testes automatizados;\n- trata usu\u00e1rio inexistente.\n\nComo testar:\n\n1. Execute a aplica\u00e7\u00e3o.\n2. Acesse \/login.\n3. Informe usu\u00e1rio e senha v\u00e1lidos.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Uma boa descri\u00e7\u00e3o reduz d\u00favidas durante a revis\u00e3o.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"19_Code_Review\"><\/span>19. Code Review<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-19-code-review\" class=\"anchor\" aria-label=\"Permalink: 19. Code Review\" href=\"#19-code-review\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Uma das funcionalidades mais importantes do GitHub \u00e9 a revis\u00e3o de c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outro desenvolvedor pode analisar seu Pull Request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ele pode:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>fazer coment\u00e1rios;<\/li>\n\n\n\n<li>sugerir melhorias;<\/li>\n\n\n\n<li>identificar bugs;<\/li>\n\n\n\n<li>solicitar altera\u00e7\u00f5es;<\/li>\n\n\n\n<li>aprovar o c\u00f3digo.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo:<\/p>\n\n\n\n<div class=\"highlight highlight-source-java\"><pre><span class=\"pl-k\">if<\/span> (<span class=\"pl-s1\">usuario<\/span> != <span class=\"pl-c1\">null<\/span>) {<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O revisor pode comentar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Podemos mover esta valida\u00e7\u00e3o para um m\u00e9todo espec\u00edfico?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea modifica o c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add <span class=\"pl-c1\">.<\/span>\ngit commit -m <span class=\"pl-s\"><span class=\"pl-pds\">\"<\/span>Refatora valida\u00e7\u00e3o do usu\u00e1rio<span class=\"pl-pds\">\"<\/span><\/span>\ngit push<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O Pull Request \u00e9 atualizado automaticamente porque os novos commits foram enviados para a mesma branch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea n\u00e3o precisa criar outro PR.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"20_Merge_do_Pull_Request\"><\/span>20. Merge do Pull Request<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-20-merge-do-pull-request\" class=\"anchor\" aria-label=\"Permalink: 20. Merge do Pull Request\" href=\"#20-merge-do-pull-request\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que tudo estiver:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u2713 revisado\n\u2713 testado\n\u2713 aprovado\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">podemos fazer o merge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O GitHub normalmente pode oferecer diferentes estrat\u00e9gias, dependendo da configura\u00e7\u00e3o do reposit\u00f3rio.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Create_a_merge_commit\"><\/span>Create a merge commit<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-create-a-merge-commit\" class=\"anchor\" aria-label=\"Permalink: Create a merge commit\" href=\"#create-a-merge-commit\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Preserva a exist\u00eancia da branch no hist\u00f3rico e cria um commit de merge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Representa\u00e7\u00e3o simplificada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A---B-------F\n     \\     \/\n      C---D\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Squash_and_merge\"><\/span>Squash and merge<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-squash-and-merge\" class=\"anchor\" aria-label=\"Permalink: Squash and merge\" href=\"#squash-and-merge\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Junta v\u00e1rios commits da branch em um \u00fanico commit antes da integra\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C Corrige bot\u00e3o\nD Ajusta CSS\nE Corrige teste\nF Finaliza login\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>G Adiciona funcionalidade de login\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Essa estrat\u00e9gia pode deixar o hist\u00f3rico da branch principal mais compacto.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Rebase_and_merge\"><\/span>Rebase and merge<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-rebase-and-merge\" class=\"anchor\" aria-label=\"Permalink: Rebase and merge\" href=\"#rebase-and-merge\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Reposiciona os commits da branch sobre a branch de destino, produzindo um hist\u00f3rico linear.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O <code>rebase<\/code> \u00e9 poderoso e merece uma aula pr\u00f3pria.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"21_Depois_do_merge\"><\/span>21. Depois do merge<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-21-depois-do-merge\" class=\"anchor\" aria-label=\"Permalink: 21. Depois do merge\" href=\"#21-depois-do-merge\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que <code>feature\/login<\/code> foi integrada \u00e0 <code>main<\/code>, voltamos para nossa m\u00e1quina.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch main<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git pull origin main<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora nossa <code>main<\/code> local tamb\u00e9m possui a funcionalidade.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos excluir a branch local:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git branch -d feature\/login<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">E, quando a branch remota ainda existir e n\u00e3o for mais necess\u00e1ria:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git push origin --delete feature\/login<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o \u00e9 obrigat\u00f3rio manter branches de funcionalidades conclu\u00eddas para sempre.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"22_Fluxo_profissional_completo\"><\/span>22. Fluxo profissional completo<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-22-fluxo-profissional-completo\" class=\"anchor\" aria-label=\"Permalink: 22. Fluxo profissional completo\" href=\"#22-fluxo-profissional-completo\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora j\u00e1 podemos visualizar todo o processo.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Atualize_a_branch_principal\"><\/span>Atualize a branch principal<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-atualize-a-branch-principal\" class=\"anchor\" aria-label=\"Permalink: Atualize a branch principal\" href=\"#atualize-a-branch-principal\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch main\ngit pull origin main<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Crie_uma_branch\"><\/span>Crie uma branch<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-crie-uma-branch\" class=\"anchor\" aria-label=\"Permalink: Crie uma branch\" href=\"#crie-uma-branch\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch -c feature\/login<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Desenvolva_e_confira\"><\/span>Desenvolva e confira<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-desenvolva-e-confira\" class=\"anchor\" aria-label=\"Permalink: Desenvolva e confira\" href=\"#desenvolva-e-confira\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git status\ngit diff<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Prepare_as_alteracoes\"><\/span>Prepare as altera\u00e7\u00f5es<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-prepare-as-altera\u00e7\u00f5es\" class=\"anchor\" aria-label=\"Permalink: Prepare as altera\u00e7\u00f5es\" href=\"#prepare-as-altera%C3%A7%C3%B5es\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add <span class=\"pl-c1\">.<\/span><\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Revise_o_Stage\"><\/span>Revise o Stage<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-revise-o-stage\" class=\"anchor\" aria-label=\"Permalink: Revise o Stage\" href=\"#revise-o-stage\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git diff --staged<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Crie_o_commit\"><\/span>Crie o commit<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-crie-o-commit\" class=\"anchor\" aria-label=\"Permalink: Crie o commit\" href=\"#crie-o-commit\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git commit -m <span class=\"pl-s\"><span class=\"pl-pds\">\"<\/span>Adiciona autentica\u00e7\u00e3o de usu\u00e1rios<span class=\"pl-pds\">\"<\/span><\/span><\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Envie_a_branch\"><\/span>Envie a branch<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-envie-a-branch\" class=\"anchor\" aria-label=\"Permalink: Envie a branch\" href=\"#envie-a-branch\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git push -u origin feature\/login<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"No_GitHub\"><\/span>No GitHub<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-no-github\" class=\"anchor\" aria-label=\"Permalink: No GitHub\" href=\"#no-github\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>Criar Pull Request\n        \u2193\nCode Review\n        \u2193\nCorre\u00e7\u00f5es\n        \u2193\nAprova\u00e7\u00e3o\n        \u2193\nMerge\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Depois_do_merge\"><\/span>Depois do merge<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-depois-do-merge\" class=\"anchor\" aria-label=\"Permalink: Depois do merge\" href=\"#depois-do-merge\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch main\ngit pull origin main\ngit branch -d feature\/login<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esse j\u00e1 \u00e9 um fluxo muito pr\u00f3ximo do utilizado em equipes profissionais.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"23_Fluxo_visual_resumido\"><\/span>23. Fluxo visual resumido<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-23-fluxo-visual-resumido\" class=\"anchor\" aria-label=\"Permalink: 23. Fluxo visual resumido\" href=\"#23-fluxo-visual-resumido\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>               GITHUB\n                  \u2502\n                  \u2502 git clone\n                  \u2193\n                main\n                  \u2502\n                  \u2502 git switch -c\n                  \u2193\n           feature\/login\n                  \u2502\n                  \u2502 editar c\u00f3digo\n                  \u2193\n             git status\n                  \u2502\n                  \u2193\n              git diff\n                  \u2502\n                  \u2193\n              git add .\n                  \u2502\n                  \u2193\n        git diff --staged\n                  \u2502\n                  \u2193\n             git commit\n                  \u2502\n                  \u2193\n              git push\n                  \u2502\n                  \u2193\n              GitHub\n                  \u2502\n                  \u2193\n           Pull Request\n                  \u2502\n                  \u2193\n            Code Review\n                  \u2502\n                  \u2193\n               Merge\n                  \u2502\n                  \u2193\n                main\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"24_Comandos_que_voce_deve_dominar_ate_aqui\"><\/span>24. Comandos que voc\u00ea deve dominar at\u00e9 aqui<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-24-comandos-que-voc\u00ea-deve-dominar-at\u00e9-aqui\" class=\"anchor\" aria-label=\"Permalink: 24. Comandos que voc\u00ea deve dominar at\u00e9 aqui\" href=\"#24-comandos-que-voc%C3%AA-deve-dominar-at%C3%A9-aqui\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Comando<\/th><th>Fun\u00e7\u00e3o<\/th><\/tr><\/thead><tbody><tr><td><code>git clone<\/code><\/td><td>baixa um reposit\u00f3rio<\/td><\/tr><tr><td><code>git status<\/code><\/td><td>mostra o estado atual<\/td><\/tr><tr><td><code>git diff<\/code><\/td><td>mostra altera\u00e7\u00f5es ainda n\u00e3o preparadas<\/td><\/tr><tr><td><code>git diff --staged<\/code><\/td><td>mostra altera\u00e7\u00f5es preparadas para o commit<\/td><\/tr><tr><td><code>git branch<\/code><\/td><td>lista ou gerencia branches<\/td><\/tr><tr><td><code>git switch<\/code><\/td><td>troca de branch<\/td><\/tr><tr><td><code>git switch -c<\/code><\/td><td>cria uma branch e entra nela<\/td><\/tr><tr><td><code>git add<\/code><\/td><td>adiciona altera\u00e7\u00f5es ao Stage<\/td><\/tr><tr><td><code>git commit<\/code><\/td><td>cria um commit<\/td><\/tr><tr><td><code>git log<\/code><\/td><td>mostra o hist\u00f3rico<\/td><\/tr><tr><td><code>git remote -v<\/code><\/td><td>mostra os reposit\u00f3rios remotos<\/td><\/tr><tr><td><code>git pull<\/code><\/td><td>busca e integra altera\u00e7\u00f5es remotas<\/td><\/tr><tr><td><code>git push<\/code><\/td><td>envia commits e refer\u00eancias ao remoto<\/td><\/tr><tr><td><code>git merge<\/code><\/td><td>integra hist\u00f3ricos de branches<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"25_Exercicio_pratico\"><\/span>25. Exerc\u00edcio pr\u00e1tico<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-25-exerc\u00edcio-pr\u00e1tico\" class=\"anchor\" aria-label=\"Permalink: 25. Exerc\u00edcio pr\u00e1tico\" href=\"#25-exerc%C3%ADcio-pr%C3%A1tico\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora vamos praticar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crie um reposit\u00f3rio no GitHub chamado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git-laboratorio\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Clone:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git clone URL_DO_REPOSITORIO<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Entre na pasta:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre><span class=\"pl-c1\">cd<\/span> git-laboratorio<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Crie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>README.md\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Adicione:<\/p>\n\n\n\n<div class=\"highlight highlight-text-md\"><pre><span class=\"pl-mh\"># <span class=\"pl-en\">Meu laborat\u00f3rio Git<\/span><\/span>\n\nProjeto criado para estudar Git e GitHub.<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add README.md\ngit commit -m <span class=\"pl-s\"><span class=\"pl-pds\">\"<\/span>Adiciona README inicial<span class=\"pl-pds\">\"<\/span><\/span>\ngit push<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora crie uma branch:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch -c feature\/sobre<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Crie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sobre.md\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Com:<\/p>\n\n\n\n<div class=\"highlight highlight-text-md\"><pre><span class=\"pl-mh\"># <span class=\"pl-en\">Sobre<\/span><\/span>\n\nEste projeto \u00e9 utilizado para praticar Git e GitHub.<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add <span class=\"pl-c1\">.<\/span>\ngit commit -m <span class=\"pl-s\"><span class=\"pl-pds\">\"<\/span>Adiciona p\u00e1gina sobre<span class=\"pl-pds\">\"<\/span><\/span>\ngit push -u origin feature\/sobre<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Entre no GitHub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crie um Pull Request:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>feature\/sobre \u2192 main\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Analise as altera\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fa\u00e7a o merge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois volte ao terminal:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git switch main\ngit pull origin main\ngit branch -d feature\/sobre<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Se conseguiu fazer isso sozinho, voc\u00ea j\u00e1 domina o fluxo fundamental de Git e GitHub.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"26_Desafio_extra\"><\/span>26. Desafio extra<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-26-desafio-extra\" class=\"anchor\" aria-label=\"Permalink: 26. Desafio extra\" href=\"#26-desafio-extra\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de concluir o exerc\u00edcio principal:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>crie uma branch chamada <code>feature\/contato<\/code>;<\/li>\n\n\n\n<li>adicione um arquivo <code>contato.md<\/code>;<\/li>\n\n\n\n<li>fa\u00e7a dois commits separados;<\/li>\n\n\n\n<li>envie a branch ao GitHub;<\/li>\n\n\n\n<li>abra um Pull Request;<\/li>\n\n\n\n<li>altere novamente o arquivo local;<\/li>\n\n\n\n<li>fa\u00e7a outro commit;<\/li>\n\n\n\n<li>execute <code>git push<\/code>;<\/li>\n\n\n\n<li>observe o mesmo Pull Request sendo atualizado;<\/li>\n\n\n\n<li>fa\u00e7a o merge.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Esse exerc\u00edcio \u00e9 importante para perceber que um Pull Request acompanha a evolu\u00e7\u00e3o da branch.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"27_Erros_comuns_de_quem_esta_comecando\"><\/span>27. Erros comuns de quem est\u00e1 come\u00e7ando<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-27-erros-comuns-de-quem-est\u00e1-come\u00e7ando\" class=\"anchor\" aria-label=\"Permalink: 27. Erros comuns de quem est\u00e1 come\u00e7ando\" href=\"#27-erros-comuns-de-quem-est%C3%A1-come%C3%A7ando\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Fazer_tudo_diretamente_na_main\"><\/span>Fazer tudo diretamente na <code>main<\/code>\n<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-fazer-tudo-diretamente-na-main\" class=\"anchor\" aria-label=\"Permalink: Fazer tudo diretamente na main\" href=\"#fazer-tudo-diretamente-na-main\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Pode funcionar em projetos pessoais pequenos, mas dificulta revis\u00e3o e colabora\u00e7\u00e3o.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Criar_um_unico_commit_gigantesco\"><\/span>Criar um \u00fanico commit gigantesco<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-criar-um-\u00fanico-commit-gigantesco\" class=\"anchor\" aria-label=\"Permalink: Criar um \u00fanico commit gigantesco\" href=\"#criar-um-%C3%BAnico-commit-gigantesco\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Commits menores e coerentes s\u00e3o mais f\u00e1ceis de revisar e entender.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Usar_git_add_sem_olhar_o_que_mudou\"><\/span>Usar <code>git add .<\/code> sem olhar o que mudou<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-usar-git-add--sem-olhar-o-que-mudou\" class=\"anchor\" aria-label=\"Permalink: Usar git add . sem olhar o que mudou\" href=\"#usar-git-add--sem-olhar-o-que-mudou\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Antes:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git status\ngit diff<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois:<\/p>\n\n\n\n<div class=\"highlight highlight-source-shell\"><pre>git add <span class=\"pl-c1\">.<\/span>\ngit diff --staged<\/pre><\/div>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Achar_que_commit_ja_enviou_o_codigo_ao_GitHub\"><\/span>Achar que <code>commit<\/code> j\u00e1 enviou o c\u00f3digo ao GitHub<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-achar-que-commit-j\u00e1-enviou-o-c\u00f3digo-ao-github\" class=\"anchor\" aria-label=\"Permalink: Achar que commit j\u00e1 enviou o c\u00f3digo ao GitHub\" href=\"#achar-que-commit-j%C3%A1-enviou-o-c%C3%B3digo-ao-github\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o enviou.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git commit = grava no reposit\u00f3rio local\ngit push   = envia ao remoto\n<\/code><\/pre>\n\n\n\n<div class=\"markdown-heading\"><h3 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"Confundir_Git_com_GitHub\"><\/span>Confundir Git com GitHub<span class=\"ez-toc-section-end\"><\/span><\/h3><a id=\"user-content-confundir-git-com-github\" class=\"anchor\" aria-label=\"Permalink: Confundir Git com GitHub\" href=\"#confundir-git-com-github\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Git \u00e9 o sistema de controle de vers\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub \u00e9 uma plataforma que hospeda e organiza reposit\u00f3rios Git.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"28_Checklist_antes_de_abrir_um_Pull_Request\"><\/span>28. Checklist antes de abrir um Pull Request<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-28-checklist-antes-de-abrir-um-pull-request\" class=\"anchor\" aria-label=\"Permalink: 28. Checklist antes de abrir um Pull Request\" href=\"#28-checklist-antes-de-abrir-um-pull-request\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de abrir o PR, pergunte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>estou na branch correta?<\/li>\n\n\n\n<li>meu c\u00f3digo compila?<\/li>\n\n\n\n<li>os testes passam?<\/li>\n\n\n\n<li>removi arquivos tempor\u00e1rios?<\/li>\n\n\n\n<li>n\u00e3o coloquei senhas ou chaves no reposit\u00f3rio?<\/li>\n\n\n\n<li>revisei <code>git status<\/code>?<\/li>\n\n\n\n<li>revisei meu diff?<\/li>\n\n\n\n<li>os commits possuem mensagens claras?<\/li>\n\n\n\n<li>a branch est\u00e1 atualizada o suficiente para ser integrada?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Esse h\u00e1bito reduz problemas durante o Code Review.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"29_Proximas_etapas_para_masterizar_Git_e_GitHub\"><\/span>29. Pr\u00f3ximas etapas para masterizar Git e GitHub<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-29-pr\u00f3ximas-etapas-para-masterizar-git-e-github\" class=\"anchor\" aria-label=\"Permalink: 29. Pr\u00f3ximas etapas para masterizar Git e GitHub\" href=\"#29-pr%C3%B3ximas-etapas-para-masterizar-git-e-github\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Agora entramos em assuntos progressivamente mais poderosos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As pr\u00f3ximas li\u00e7\u00f5es ser\u00e3o:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Git Fetch, Pull e Push profundamente<\/strong><\/li>\n\n\n\n<li><strong>Git Restore, Reset e Revert \u2014 como desfazer altera\u00e7\u00f5es sem destruir seu projeto<\/strong><\/li>\n\n\n\n<li><strong>Git Stash \u2014 guardar trabalho temporariamente<\/strong><\/li>\n\n\n\n<li><strong>Merge avan\u00e7ado e resolu\u00e7\u00e3o de conflitos reais<\/strong><\/li>\n\n\n\n<li><strong>Git Rebase \u2014 reorganizando o hist\u00f3rico<\/strong><\/li>\n\n\n\n<li><strong>Interactive Rebase \u2014 alterando, juntando e reorganizando commits<\/strong><\/li>\n\n\n\n<li><strong>Cherry-pick \u2014 trazendo commits espec\u00edficos<\/strong><\/li>\n\n\n\n<li><strong>Tags e Releases no GitHub<\/strong><\/li>\n\n\n\n<li><strong>GitHub Issues e organiza\u00e7\u00e3o de projetos<\/strong><\/li>\n\n\n\n<li><strong>Pull Requests e Code Review profissional<\/strong><\/li>\n\n\n\n<li><strong>GitHub Actions e CI\/CD<\/strong><\/li>\n\n\n\n<li><strong>Prote\u00e7\u00e3o da branch main<\/strong><\/li>\n\n\n\n<li><strong>CODEOWNERS e revis\u00e3o obrigat\u00f3ria<\/strong><\/li>\n\n\n\n<li><strong>GitHub Projects<\/strong><\/li>\n\n\n\n<li><strong>GitHub Releases e versionamento sem\u00e2ntico<\/strong><\/li>\n\n\n\n<li><strong>GitHub CLI<\/strong><\/li>\n\n\n\n<li><strong>SSH e autentica\u00e7\u00e3o segura<\/strong><\/li>\n\n\n\n<li><strong>Git Bisect \u2014 encontrando o commit que criou um bug<\/strong><\/li>\n\n\n\n<li><strong>Reflog \u2014 recuperando commits que pareciam perdidos<\/strong><\/li>\n\n\n\n<li><strong>Git Hooks e automa\u00e7\u00e3o<\/strong><\/li>\n\n\n\n<li><strong>Estrat\u00e9gias de branches: Git Flow, GitHub Flow e Trunk-Based Development<\/strong><\/li>\n\n\n\n<li><strong>Como contribuir em projetos Open Source<\/strong><\/li>\n\n\n\n<li><strong>Forks e Pull Requests em projetos de terceiros<\/strong><\/li>\n\n\n\n<li><strong>GitHub Actions completo<\/strong><\/li>\n\n\n\n<li><strong>Seguran\u00e7a: Secrets, Dependabot e Code Scanning<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Quando dominarmos essa trilha, voc\u00ea n\u00e3o estar\u00e1 apenas sabendo usar <code>git add<\/code>, <code>commit<\/code> e <code>push<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea ter\u00e1 dom\u00ednio suficiente para utilizar <strong>Git e GitHub como ferramentas profissionais de desenvolvimento, colabora\u00e7\u00e3o, automa\u00e7\u00e3o, versionamento e entrega de software<\/strong>.<\/p>\n\n\n\n<div class=\"markdown-heading\"><h2 class=\"heading-element\"><span class=\"ez-toc-section\" id=\"30_Resumo_da_licao\"><\/span>30. Resumo da li\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2><a id=\"user-content-30-resumo-da-li\u00e7\u00e3o\" class=\"anchor\" aria-label=\"Permalink: 30. Resumo da li\u00e7\u00e3o\" href=\"#30-resumo-da-li%C3%A7%C3%A3o\"><span aria-hidden=\"true\" class=\"octicon octicon-link\"><\/span><\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Nesta aula, percorremos o fluxo completo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>clone\n  \u2193\natualizar main\n  \u2193\ncriar branch\n  \u2193\neditar\n  \u2193\nstatus \/ diff\n  \u2193\nadd\n  \u2193\ncommit\n  \u2193\npush\n  \u2193\nPull Request\n  \u2193\nCode Review\n  \u2193\nmerge\n  \u2193\natualizar main local\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A partir daqui, n\u00e3o vamos apenas decorar comandos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nas pr\u00f3ximas li\u00e7\u00f5es, vamos entender <strong>o que o Git realmente faz por tr\u00e1s de cada opera\u00e7\u00e3o<\/strong>, come\u00e7ando pela diferen\u00e7a entre <strong>fetch, pull e push<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veja tamb\u00e9m: <a href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/category\/git-e-github\/\">mais conte\u00fados sobre Git e GitHub<\/a>.<\/p>\n\n\n    <article class=\"aabp-card aabp-style-card\">\n                            <a href=\"https:\/\/link.amazon\/B0fjjaUwl\" target=\"_blank\" rel=\"nofollow sponsored noopener\" class=\"aabp-image\">\n                <img decoding=\"async\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2026\/06\/71BcV6igIcL._SL1500_1.jpg\" alt=\"Controlando vers\u00f5es com Git e GitHub\" loading=\"lazy\">\n            <\/a>\n                <div class=\"aabp-content\">\n            <h3><span class=\"ez-toc-section\" id=\"Controlando_versoes_com_Git_e_GitHub\"><\/span>Controlando vers\u00f5es com Git e GitHub<span class=\"ez-toc-section-end\"><\/span><\/h3>\n            <div class=\"aabp-rating\">\u2b50 4.8\/5<\/div>            <p>Controlando vers\u00f5es com Git e GitHub. Produto recomendado para estudos, programa\u00e7\u00e3o e produtividade.<\/p>            <div class=\"aabp-price-row\">\n                                <strong class=\"aabp-price\">R$ 39,90<\/strong>            <\/div>\n            <a class=\"aabp-button\" href=\"https:\/\/link.amazon\/B0fjjaUwl\" target=\"_blank\" rel=\"nofollow sponsored noopener\">Ver na Amazon<\/a>\n            <small class=\"aabp-disclaimer\">Como afiliado, posso receber comiss\u00e3o por compras qualificadas.<\/small>\n        <\/div>\n    <\/article>\n    \n\n\n    <article class=\"aabp-card aabp-style-card\">\n                            <a href=\"https:\/\/link.amazon\/B0hiBc6zy\" target=\"_blank\" rel=\"nofollow sponsored noopener\" class=\"aabp-image\">\n                <img decoding=\"async\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2026\/06\/61AIh9ZCu2L._SL1500_1.jpg\" alt=\"Git e GitHub: Seu C\u00f3digo Versionado: Aprenda de uma vez por todas e sem enrola\u00e7\u00e3o (Programa\u00e7\u00e3o para Iniciantes)\" loading=\"lazy\">\n            <\/a>\n                <div class=\"aabp-content\">\n            <h3><span class=\"ez-toc-section\" id=\"Git_e_GitHub_Seu_Codigo_Versionado_Aprenda_de_uma_vez_por_todas_e_sem_enrolacao_Programacao_para_Iniciantes\"><\/span>Git e GitHub: Seu C\u00f3digo Versionado: Aprenda de uma vez por todas e sem enrola\u00e7\u00e3o (Programa\u00e7\u00e3o para Iniciantes)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n            <div class=\"aabp-rating\">\u2b50 4.7\/5<\/div>            <p>Git e GitHub: Seu C\u00f3digo Versionado: Aprenda de uma vez por todas e sem enrola\u00e7\u00e3o (Programa\u00e7\u00e3o para Iniciantes). Produto recomendado para estudos, programa\u00e7\u00e3o e produtividade.<\/p>            <div class=\"aabp-price-row\">\n                                <strong class=\"aabp-price\">R$ 14,99<\/strong>            <\/div>\n            <a class=\"aabp-button\" href=\"https:\/\/link.amazon\/B0hiBc6zy\" target=\"_blank\" rel=\"nofollow sponsored noopener\">Ver na Amazon<\/a>\n            <small class=\"aabp-disclaimer\">Como afiliado, posso receber comiss\u00e3o por compras qualificadas.<\/small>\n        <\/div>\n    <\/article>\n    \n\n\n    <article class=\"aabp-card aabp-style-card\">\n                            <a href=\"https:\/\/link.amazon\/B0imKwTu6\" target=\"_blank\" rel=\"nofollow sponsored noopener\" class=\"aabp-image\">\n                <img decoding=\"async\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2026\/06\/81g2cXsfMWL._SL1500_1.jpg\" alt=\"Git &#038; GitHub Descomplicados: Do zero ao avan\u00e7ado: um guia passo a passo para dominar versionamento, colabora\u00e7\u00e3o e desenvolvimento moderno\" loading=\"lazy\">\n            <\/a>\n                <div class=\"aabp-content\">\n            <h3><span class=\"ez-toc-section\" id=\"Git_GitHub_Descomplicados_Do_zero_ao_avancado_um_guia_passo_a_passo_para_dominar_versionamento_colaboracao_e_desenvolvimento_moderno\"><\/span>Git &#038; GitHub Descomplicados: Do zero ao avan\u00e7ado: um guia passo a passo para dominar versionamento, colabora\u00e7\u00e3o e desenvolvimento moderno<span class=\"ez-toc-section-end\"><\/span><\/h3>\n            <div class=\"aabp-rating\">\u2b50 3.8\/5<\/div>            <p>Git &amp; GitHub Descomplicados: Do zero ao avan\u00e7ado: um guia passo a passo para dominar versionamento, colabora\u00e7\u00e3o e desenvolvimento moderno. Produto recomendado para estudos, programa\u00e7\u00e3o e produtividade.<\/p>            <div class=\"aabp-price-row\">\n                                <strong class=\"aabp-price\">R$ 2,99<\/strong>            <\/div>\n            <a class=\"aabp-button\" href=\"https:\/\/link.amazon\/B0imKwTu6\" target=\"_blank\" rel=\"nofollow sponsored noopener\">Ver na Amazon<\/a>\n            <small class=\"aabp-disclaimer\">Como afiliado, posso receber comiss\u00e3o por compras qualificadas.<\/small>\n        <\/div>\n    <\/article>\n    \n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video_embed clearfix\"><div class=\"video_embed clearfix\"><iframe loading=\"lazy\" title=\"Git e GitHub \u2014 Li\u00e7\u00e3o 2: do Clone ao Pull Request\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/7SDM7XkvYn8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div><\/div>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Segunda li\u00e7\u00e3o de Git e GitHub: aprenda o fluxo real de desenvolvimento, do clone do reposit\u00f3rio at\u00e9 o Pull Request, revis\u00e3o de c\u00f3digo e merge.<\/p>\n","protected":false},"author":1,"featured_media":1599,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[649],"tags":[148,650,126,124,72,73,629,138,628,141],"class_list":["post-1597","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-git-e-github","tag-branch","tag-code-review","tag-commit","tag-controle-de-versao","tag-git","tag-github","tag-iniciantes","tag-merge","tag-programacao","tag-pull-request"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/1597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1597"}],"version-history":[{"count":3,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/1597\/revisions"}],"predecessor-version":[{"id":1601,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/1597\/revisions\/1601"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/1599"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}