{
  "version": "https://jsonfeed.org/version/1",
  "title": "Meus 10 Centavos",
  "home_page_url": "https://meus10centavos.vercel.app/",
  "feed_url": "https://meus10centavos.vercel.app//author-matheus.json",
  "description": "Meus 10 centavos de contribuição para uma discussão que ninguém pediu minha opinião",
  "items": [
    {
      "id": "https://meus10centavos.vercel.app//git-pratico-para-iniciantes.html",
      "url": "https://meus10centavos.vercel.app//git-pratico-para-iniciantes.html",
      "title": "Git prático para iniciantes - O início de um projeto",
      "content_html": "<!-- Content Injected to every content markdown header -->\n<h1><a href=\"#introdução\" aria-hidden=\"true\" class=\"anchor\" id=\"introdução\"></a>Introdução</h1>\n<p>Antes de começar, já devo avisar que o objetivo desta série não é ensinar git de A até Z como muitos fazem, pois eu não acho que conseguiria fazer algo melhor do que a <a href=\"https://git-scm.com/book/pt-br/v2\">documentação do git</a>, que tem uma leitura fácil e entendível para quem está iniciando, além de ter uma boa parte já traduzida para o português brasileiro, caso tenha dificuldades com o inglês.</p>\n<p>Meu objetivo é simplificar seu aprendizado, abordando o essencial, destrinchando as entrelinhas e explicando de uma forma fácil para iniciantes.</p>\n<blockquote>\n<p><strong>Nota:</strong> Entenda que estamos falando do git (ferramenta de controle de versão), não do GitHub (repositório remoto). Isso porque em algum momento você irá trabalhar em empresas que utilizam outros, como BitBucket e GitLab. Pesquisem por conta sobre esses repositórios remotos. Se em algum momento eu me referir a repositório remoto, assuma que estou falando do GitHub para esses exemplos, mas o mesmo se aplicaria de forma similar aos outros citados.</p>\n</blockquote>\n<h1><a href=\"#inicializando-um-repositório-na-sua-máquina\" aria-hidden=\"true\" class=\"anchor\" id=\"inicializando-um-repositório-na-sua-máquina\"></a>Inicializando um repositório na sua máquina</h1>\n<p>Vamos supor que você já assistiu seu curso da Udemy ou do YouTube e já sabe o básico do funcionamento de git. Logo, caso tenha entendido corretamente, o primeiro passo é inicializar um repositório dentro do diretório do seu projeto com o comando <code>git init</code>.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git init\nInitialized empty Git repository in /home/enzo/projeto/.git/\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<p>O que você precisa entender agora é que, ao inicializar um repositório, um diretório chamado <code>.git</code> será criado no diretório do projeto e que por padrão, nenhum dos seus arquivos estará, mas o git já consegue vê-los. Além disso, todos seus arquivos começarão com o estado <code>untracked</code> ou &quot;não rastreado&quot;.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git status\nOn branch main\n\nNo commits yet\n\nUntracked files:\n  (use &quot;git add &lt;file&gt;...&quot; to include in what will be committed)\n        index.html\n        style.css\n\nnothing added to commit but untracked files present (use &quot;git add&quot; to track)\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<h1><a href=\"#as-três-áreas-do-git\" aria-hidden=\"true\" class=\"anchor\" id=\"as-três-áreas-do-git\"></a>As três áreas do git</h1>\n<p>É essencial que você entenda que o git possui três áreas e que seus arquivos vão ter estados nessas áreas. As áreas basicamente são: <em>working directory</em>, <em>staging area</em> e o diretório <code>.git</code> do projeto.</p>\n<img src=\"/media/git-areas.png\" alt=\"As três áreas do git\" width=\"700\" height=\"500\">\n<p>Resumindo o fluxo nessas áreas de maneira simples.</p>\n<ul>\n<li>Você faz alterações no seu projeto no <em>working directory</em></li>\n<li>Você adiciona as alterações na <em>staging area</em></li>\n<li>Você registra as alterações, que irão ser armazenadas no diretório <code>.git</code></li>\n</ul>\n<h1><a href=\"#preparando-para-o-commit\" aria-hidden=\"true\" class=\"anchor\" id=\"preparando-para-o-commit\"></a>Preparando para o commit</h1>\n<p>Você, como um ótimo desenvolvedor, terminou a primeira tarefa do projeto, que era criar o código HTML e o CSS de uma página importante e agora você quer que o git faça o versionamento desse código.</p>\n<p>Primeiro, precisamos adicionar as alterações que fizemos para a área de staging, ou &quot;área de preparo&quot;. Para isso, utilizamos o comando <code>git add</code> que pode ser chamado das seguintes formas:</p>\n<ul>\n<li><code>git add index.html</code>: Adiciona um arquivo específico</li>\n<li><code>git add index.html style.css</code>: Adiciona múltiplos arquivos</li>\n<li><code>git add foo/bar</code>: Adiciona todos os arquivos de um diretório</li>\n<li><code>git add .</code>: Adiciona todos os arquivos</li>\n</ul>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-pc-do-enzo:~/projeto$ git add index.html style.css\nenzo@pc-pc-do-enzo:~/projeto$ git status\nOn branch main\n\nNo commits yet\n\nChanges to be committed:\n  (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)\n        new file:   index.html\n        new file:   style.css\n\nenzo@pc-pc-do-enzo:~/projeto$\n</code></pre>\n<p>Como pode ver, as informações do comando <code>git status</code> são bem claras:</p>\n<ul>\n<li><strong>On branch main</strong>: Estamos na ramificação principal</li>\n<li><strong>No commits yet</strong>: Ainda não há nenhum commit no repositório</li>\n<li><strong>Changes to be committed</strong>: Mudanças que serão &quot;commitadas&quot;. Preste atenção nessa parte, pois os items da lista abaixo, irão para o próximo commit. Caso você queira retirar um arquivo que você colocou por engano, basta executar <code>git rm --cached &lt;nome-arquivo&gt;</code> para retirar da <em>staging area</em> de volta para o <em>working directory</em>.</li>\n</ul>\n<p>Agora, eu realmente espero que você tenha se questionado do seguinte:</p>\n<blockquote>\n<p>&quot;E se eu fizer uma modificação em um arquivo que eu já adicionei na <em>staging area</em>?&quot;</p>\n</blockquote>\n<p>E aqui entramos em outro conceito importante que não se aplica somente ao git, mas em muitas ferramentas que você vai encontrar e ele se chama <em><strong>diffing</strong></em>.</p>\n<p>Em termos simples, <em><strong>diffing</strong></em> é o processo de comparação entre arquivos, para saber o que mudou de um arquivo para outro. Você pode pensar nisso como um &quot;jogo dos 7 erros&quot;, onde você tinha duas imagens e precisava encontrar a diferença entre elas.</p>\n<p>Graças ao <em><strong>diffing</strong></em>, o git consegue te dizer exatamente quais linhas foram adicionadas (+) e quais linhas foram removidas (-) na comparação de uma versão anterior de um arquivo a uma versão atual.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git diff\ndiff --git a/index.html b/index.html\nindex c3939a0..e60d682 100644\n--- a/index.html\n+++ b/index.html\n@@ -7,12 +7,13 @@\n     &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;\n   &lt;/head&gt;\n   &lt;body&gt;\n-    &lt;h1&gt;Página inicial&lt;/h1&gt;\n+    &lt;h1&gt;Página inicial alterada&lt;/h1&gt;\n     &lt;p&gt;\n       Lorem ipsum dolor, sit amet consectetur adipisicing elit. Harum ipsum\n       temporibus minima explicabo molestiae repellendus deleniti dolore, at\n       vitae illo numquam eaque veritatis exercitationem. Aliquam repudiandae\n       similique quaerat quia optio.\n     &lt;/p&gt;\n+    &lt;p&gt;Uma nova alteração&lt;/p&gt;\n   &lt;/body&gt;\n &lt;/html&gt;\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<p>Então, quando você realiza a modificação de um arquivo que já está na <em><strong>staging area</strong></em>, esse arquivo terá uma versão na <em><strong>staging area</strong></em> que irá para o próximo <em>commit</em> e uma versão em estado <em><strong>modified</strong></em> no <em><strong>working directory</strong></em>.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-do-enzo:~/projeto$ git status\nOn branch main\n\nNo commits yet\n\nChanges to be committed:\n  (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)\n        new file:   index.html\n        new file:   style.css\n\nChanges not staged for commit:\n  (use &quot;git add &lt;file&gt;...&quot; to update what will be committed)\n  (use &quot;git restore &lt;file&gt;...&quot; to discard changes in working directory)\n        modified:   index.html\n\nenzo@pc-do-enzo:~/projeto$\n</code></pre>\n<blockquote>\n<p>&quot;Mas e se quiser adicionar a nova alteração que fiz junto a que já está na <em><strong>staging area</strong></em>?&quot;</p>\n</blockquote>\n<p>Basta adicionar essa alteração com o <code>git add</code> quantas vezes forem necessárias.</p>\n<h1><a href=\"#realizando-o-commit\" aria-hidden=\"true\" class=\"anchor\" id=\"realizando-o-commit\"></a>Realizando o commit</h1>\n<p>A partir deste ponto, vamos assumir que você já fez e adicionou tudo o que era necessário e está pronto para o commit.</p>\n<blockquote>\n<p>Mas o que é esse tal de commit que tanto é falado?</p>\n</blockquote>\n<p>Um <em><strong>commit</strong></em> é um objeto do git que de fato vai registrar uma versão de código dentro do seu repositório git. Ele trás metadados como:</p>\n<ul>\n<li>O autor do <em>commit</em></li>\n<li>A data em que ele foi realizado</li>\n<li>Uma descrição</li>\n<li>O <em>hash</em> do <em>commit</em> (isso é o principal para o git, pois podemos rastrear a qualquer momento esse <em>commit</em> e ver o que foi feito nele)</li>\n<li>Quem aprovou seu <em>merge</em> em alguma ramificação (mais a frente você verá o conceito de <em>merge</em>, ou mesclagem)</li>\n</ul>\n<p>Para realizar o commit, você deve executar o comando <code>git commit</code>, que pode receber algumas opções, mas por enquanto vamos falar somente da <em>flag</em> <code>-m</code></p>\n<p>Se você deseja realizar o <em>commit</em> com uma descrição simples:</p>\n<p><code>git commit -m 'feat: implementação da página inicial do projeto'</code></p>\n<p>Se você deseja realizar o commit com uma descrição simples e informar mais detalhes:\n<code>git commit</code></p>\n<p>Isso irá abrir o editor padrão configurado para o git, para que você possa escrever mais detalhes sobre o <em>commit</em>. Você terá instruções em forma de comentários, indicando como você deve estruturar a mensagem.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">GNU nano 7.2                                 /home/enzo/projeto/.git/COMMIT_EDITMSG *\n\nfeat: implementação da página inicial do projeto\n&lt;ENTER&gt;\n- Criação do header fixo\n- Criação de efeito parallax\n- Carregamento de fontes via CDN\n\n# Please enter the commit message for your changes. Lines starting\n# with '#' will be ignored, and an empty message aborts the commit.\n#\n# On branch main\n#\n# Initial commit\n#\n# Changes to be committed:\n#       new file:   index.html\n#       new file:   style.css\n#\n# Changes not staged for commit:\n#       modified:   index.html\n#\n</code></pre>\n<p>Ao salvar e sair, seu <em>commit</em> terá sido realizado.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">enzo@pc-pc-do-enzo:~/projeto$ git commit\n[main (root-commit) af17a38] feat: implementação da página inicial do projeto\n 2 files changed, 32 insertions(+)\n create mode 100644 index.html\n create mode 100644 style.css\nenzo@pc-pc-do-enzo:~/projeto$\n</code></pre>\n<p>E você pode ver detalhes sobre esse <em>commit</em> e outros, obtendo seus logs, com o comando <code>git log</code>.</p>\n<pre class=\"marmite-code\"><code class=\"marmite-code-inner\">commit af17a38bca106c5316239f9e209cc3c1d43fd5c5 (HEAD -&gt; main)\nAuthor: Enzo da Silva &lt;enzosilva@gmail.com&gt;\nDate:   Fri Feb 6 03:42:34 2026 -0300\n\n    feat: implementação da página inicial do projeto\n\n    - Criação do header fixo\n    - Criação de efeito parallax\n    - Carregamento de fontes via CDN\n</code></pre>\n<h1><a href=\"#conclusão\" aria-hidden=\"true\" class=\"anchor\" id=\"conclusão\"></a>Conclusão</h1>\n<p>Nesta primeira parte da série, você aprendeu a inicializar um repositório git, preparar alterações para seu _<strong>commit</strong> e como realizá-lo.</p>\n<p>Além disso, expliquei sobre o <em><strong>diffing</strong></em>, que é o processo que o git usa para fazer comparações entre arquivos de versões diferentes, para saber qual mudança houve entre eles.</p>\n<p>Como material complementar, eu fortemente recomendo que você leia os capitulos 1.1 até o 2.3 da <a href=\"https://git-scm.com/book/pt-br/v2\">documentação do git</a> para entender com mais detalhes o que foi abordado aqui, pois sempre utilizo ele como base quando preciso explicar git</p>\n<h1><a href=\"#próximos-passos\" aria-hidden=\"true\" class=\"anchor\" id=\"próximos-passos\"></a>Próximos passos</h1>\n<p>No próximo capítulo, pretendo falar sobre:</p>\n<ul>\n<li>Como editar a mensagem de um <em>commit</em></li>\n<li>Como reverter um <em>commit</em> que já foi realizado</li>\n<li>Como adicionar alterações a um <em>commit</em> já realizado</li>\n<li>Repositórios remotos</li>\n<li>Configuração de chave SSH</li>\n<li>Assinatura de commits (isso aqui é importante e muita gente não sabe que existe e como fazer)</li>\n</ul>\n<h1><a href=\"#agradecimentos\" aria-hidden=\"true\" class=\"anchor\" id=\"agradecimentos\"></a>Agradecimentos</h1>\n<p>Queria deixar registrado, meu agradecimento ao meu amigo Fabrício, que criou este espaço e permitiu que eu e outras pessoas compartilhássemos nossos conhecimentos com vocês.</p>\n<h1><a href=\"#referências\" aria-hidden=\"true\" class=\"anchor\" id=\"referências\"></a>Referências</h1>\n<p><a href=\"https://git-scm.com/book/en/v2\">https://git-scm.com/book/en/v2</a></p>\n<p><a href=\"https://git-scm.com/book/pt-br/v2\">https://git-scm.com/book/pt-br/v2</a></p>\n<h5><a href=\"#créditos\" aria-hidden=\"true\" class=\"anchor\" id=\"créditos\"></a>Créditos</h5>\n<p>Agradeço a contribuição do Matheus Henrique.</p>\n<p>GitHub: <a href=\"https://github.com/mathstylish\">github.com/mathstylish</a><br />\nLinkedIn: <a href=\"https://www.linkedin.com/in/mathstylish/\">linkedin.com/in/mathstylish/</a></p>\n<!-- Content Injected to every content markdown footer -->\n",
      "summary": "",
      "date_published": "2026-02-11T00:00:00-00:00",
      "image": "/media/git-areas.png",
      "authors": [
        {
          "name": "Matheus Henrique",
          "url": "",
          "avatar": "https://avatars.githubusercontent.com/u/44449793?v=4"
        }
      ],
      "tags": [
        "versionamento",
        "guia"
      ],
      "language": "pt-BR"
    }
  ]
}