<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Git - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Git - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 22 May 2026 15:16:59 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/tag/git/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ O guia do iniciante para o Git e o GitHub ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Thanoshan MV O que é Git? O Git é um software de controle de versão gratuito e de código aberto. Foi criado por Linus Torvalds em 2005. Essa ferramenta é um sistema de controle de versão que foi inicialmente desenvolvido para trabalhar com vários desenvolvedores no kernel do ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-guia-do-iniciante-para-o-git-e-o-github/</link>
                <guid isPermaLink="false">66e703f4275cfd0409135647</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Mon, 16 Sep 2024 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/cover-pic.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/the-beginners-guide-to-git-github/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The beginner’s guide to Git &amp; GitHub</a>
      </p><p>Escrito por: Thanoshan MV</p><h1 id="o-que-git"><strong>O que é Git?</strong></h1><p>O Git é um software de <strong>controle de versão</strong> gratuito e de código aberto. Foi criado por Linus Torvalds em 2005. Essa ferramenta é um sistema de controle de versão que foi inicialmente desenvolvido para trabalhar com vários desenvolvedores no kernel do Linux.</p><p>Basicamente, isso significa que o Git é um rastreador de conteúdo. Então, o Git pode ser usado para armazenar conteúdo — e é principalmente usado para armazenar código por causa das outras funcionalidades que ele fornece.</p><p>Projetos da vida real geralmente têm diversos desenvolvedores trabalhando em paralelo. Assim, eles precisam de um sistema de controle de versão como o Git para garantir que não ocorram conflitos de código entre eles.</p><p>Além disso, os requisitos de tais projetos mudam frequentemente. Por isso, um sistema de controle de versão permite que os desenvolvedores revertam e voltem a uma versão anterior do seu código.</p><p>O sistema de <em>branches</em> no Git permite que os desenvolvedores trabalhem individualmente em uma tarefa (por exemplo: uma <em>branch</em> -&gt; uma tarefa OU uma <em>branch</em> -&gt; um desenvolvedor). Basicamente, pense no Git como uma pequena aplicação de software que controla sua base de código, se você for um desenvolvedor.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/vcs.png" class="kg-image" alt="vcs" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/vcs.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/vcs.png 746w" sizes="(min-width: 720px) 720px" width="746" height="309" loading="lazy"><figcaption>Funcionamento do Git</figcaption></figure><h1 id="reposit-rios-do-git"><strong>Repositórios do Git</strong></h1><p>Se quisermos começar a usar o Git, precisamos saber onde hospedar nossos repositórios.</p><p>Um repositório (ou "<em>repo</em>", para abreviar) é um projeto que contém diversos arquivos. No nosso caso, um repositório conterá arquivos baseados em código.</p><p>Existem duas maneiras de hospedar seus repositórios. Uma é <em>on-line</em> (na nuvem) e a outra é <em>off-line</em> (instalado no seu servidor).</p><p>Existem três serviços populares de hospedagem do Git: GitHub (pertencente à Microsoft), GitLab (pertencente ao GitLab) e BitBucket. Usaremos o GitHub como nosso serviço de hospedagem.</p><h1 id="antes-de-usar-o-git-devemos-saber-por-que-precisamos-dele"><strong>Antes de usar o Git, devemos saber por que precisamos dele</strong></h1><h3 id="o-git-facilita-a-contribui-o-para-projetos-de-c-digo-aberto">O Git facilita a contribuição para projetos de código aberto</h3><p>Quase todos os projetos de código aberto usam o GitHub para gerenciar seus projetos. Usar o GitHub é gratuito se o seu projeto for de código aberto, e inclui uma wiki e um rastreador de problemas que facilita a inclusão de documentação mais detalhada e o recebimento de feedback sobre seu projeto.</p><p>Se você quiser contribuir, você apenas faz o <em>fork</em> (uma cópia) de um projeto, faz suas alterações e, em seguida, envia ao projeto um <em>pull request</em> usando a interface da web do GitHub. Esse <em>pull request</em> é sua maneira de dizer ao projeto que você está pronto para que revisem suas alterações.</p><h3 id="documenta-o">Documentação</h3><p>Ao usar o GitHub, você facilita a obtenção de excelente documentação. A seção de ajuda e os guias deles têm artigos sobre praticamente qualquer tópico relacionado ao Git que você possa imaginar.</p><h3 id="op-es-de-integra-o">Opções de integração</h3><p>O GitHub pode se integrar com plataformas comuns como Amazon e Google Cloud, com serviços como Code Climate para acompanhar seu feedback, e pode realçar a sintaxe em mais de 200 linguagens de programação diferentes.</p><h3 id="acompanhe-as-altera-es-no-seu-c-digo-entre-vers-es">Acompanhe as alterações no seu código entre versões</h3><p>Quando várias pessoas colaboram em um projeto, é difícil acompanhar as revisões — quem mudou o que, quando e onde esses arquivos estão armazenados.</p><p>O GitHub cuida desse problema ao acompanhar todas as alterações que foram enviadas ao repositório.</p><p>Muito parecido com o uso do Microsoft Word ou do Google Drive, você pode ter um histórico de versões do seu código para que versões anteriores não sejam perdidas a cada iteração. É fácil voltar à versão anterior e contribuir com seu trabalho.</p><h3 id="exibir-seu-trabalho">Exibir seu trabalho</h3><p>Você é um desenvolvedor que deseja atrair recrutadores? O GitHub é a melhor ferramenta em que você pode confiar para isso.</p><p>Hoje, ao procurarem por novos recrutas para seus projetos, a maioria das empresas olha para perfis do GitHub. Se o seu perfil estiver disponível, você terá uma maior chance de ser recrutado, mesmo se não for de uma universidade ou faculdade renomada.</p><h1 id="aprendendo-a-usar-o-git-e-o-github"><strong>Aprendendo a usar o Git e o GitHub</strong></h1><h3 id="cria-o-de-conta-no-github">Criação de conta no GitHub</h3><p>Para criar sua conta, você precisa ir ao site do <a href="https://github.com/">GitHub</a> e preencher o formulário de registro.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/github-webpage.png" class="kg-image" alt="github-webpage" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/github-webpage.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/github-webpage.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2024/09/github-webpage.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2024/09/github-webpage.png 2400w" sizes="(min-width: 720px) 720px" width="2518" height="1218" loading="lazy"><figcaption><em>Página oficial do GitHub</em></figcaption></figure><h3 id="instala-o-do-git">Instalação do Git</h3><p>Agora, precisamos instalar as ferramentas do Git em nosso computador. Usaremos a CLI (interface de linha de comando) para nos comunicarmos com o GitHub.</p><p>Para o Linux:</p><ol><li>Primeiro, atualize seus pacotes.</li></ol><pre><code>sudo apt update
</code></pre><ol><li>Em seguida, instale o Git e o GitHub com apt-get</li></ol><pre><code>sudo apt-get install git
</code></pre><ol><li>Finalmente, verifique se o Git está instalado corretamente</li></ol><pre><code>git --version
</code></pre><ol><li>Execute os seguintes comandos com suas informações para definir um nome de usuário e e-mail padrão quando você for salvar seu trabalho.</li></ol><pre><code>git config --global user.name "seu_nome_de_usuario_aqui"
git config --global user.email "exemplo@e-mail.com"
</code></pre><h1 id="trabalhando-com-projetos-no-github"><strong>Trabalhando com projetos no GitHub</strong></h1><p>Trabalharemos com projetos no GitHub de dois modos.</p><h3 id="modo-1-crie-o-reposit-rio-clone-o-para-o-seu-pc-e-trabalhe-nele-recomendado-">Modo 1: crie o repositório, clone-o para o seu PC e trabalhe nele. (recomendado)</h3><p>O modo 1 envolve criar um repositório do zero no GitHub, cloná-lo para o nosso computador, trabalhar em nosso projeto e enviá-lo de volta.</p><p>Crie um repositório clicando no botão "New repository" na página da web do GitHub.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/new-repo.png" class="kg-image" alt="new-repo" width="309" height="377" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/readme.png" class="kg-image" alt="readme" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/readme.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/readme.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/readme.png 1069w" sizes="(min-width: 720px) 720px" width="1069" height="836" loading="lazy"></figure><p>Perfeito! Seu primeiro repositório no GitHub foi criado.</p><p>Sua primeira missão é obter uma cópia do repositório no seu computador. Para fazer isso, você precisa "clonar" o repositório no seu computador.</p><p>Clonar um repositório significa que você está pegando um repositório que está no servidor e clonando-o para o seu computador - assim como baixá-lo. Na página do repositório, você precisa obter o endereço "HTTPS".</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/github-project.png" class="kg-image" alt="github-project" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/github-project.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/github-project.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/github-project.png 1157w" sizes="(min-width: 720px) 720px" width="1157" height="782" loading="lazy"></figure><p>Depois de obter o endereço do repositório, você precisa usar seu terminal. Utilize o seguinte comando no terminal. Quando estiver pronto, você pode inserir isto:</p><pre><code>git clone [ENDEREÇO HTTPS]
</code></pre><p>Esse comando fará uma cópia local do repositório hospedado no endereço fornecido.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/cmd-1.png" class="kg-image" alt="cmd-1" width="551" height="89" loading="lazy"><figcaption><em>Mensagem de saída do comando "git clone"</em></figcaption></figure><p>Agora, o repositório está no seu computador. Você precisa entrar nele com o seguinte comando.</p><pre><code>cd [NOME DO REPOSITÓRIO]
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/cmd-2.png" class="kg-image" alt="cmd-2" width="210" height="41" loading="lazy"></figure><p>Como você pode ver na imagem acima, o nome do meu repositório é "My-GitHub-Project" e esse comando me fez ir para esse diretório específico.</p><p><strong>OBSERVAÇÃO:</strong> quando você clona, o Git criará um repositório no seu computador. Se quiser, você pode acessar seu projeto com a interface do usuário do computador em vez de usar o comando 'cd' no terminal.</p><p>Agora, naquela pasta, podemos criar arquivos, trabalhar neles e salvá-los localmente. Para salvá-los remotamente — como no GitHub — temos que fazer um processo chamado "<em>commit</em>". Para fazer isso, volte ao seu terminal. Se o tiver fechado, como mencionei anteriormente, use o comando 'cd'.</p><pre><code>cd [NOME DO REPOSITÓRIO]
</code></pre><p>Agora, no terminal, você está no diretório do seu repositório. Existem 4 etapas em um commit: 'status', 'add', 'commit' e 'push'. Todos os passos seguintes devem ser realizados dentro do seu projeto. Vamos passar por eles um por um.</p><p>"status": a primeira coisa que você precisa fazer é verificar os arquivos que você modificou. Para fazer isso, você pode digitar o seguinte comando para exibir uma lista de mudanças.</p><pre><code>git status
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/git-status-1.png" class="kg-image" alt="git-status-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/git-status-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/git-status-1.png 708w" width="708" height="187" loading="lazy"></figure><p>"add": com a ajuda da lista de mudanças, você pode adicionar todos os arquivos que deseja enviar com o seguinte comando,</p><pre><code>git add [NOME DO ARQUIVO] [NOME DO ARQUIVO] [...]
</code></pre><p>No nosso caso, vamos adicionar um arquivo HTML simples.</p><pre><code>git add sample.html
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/sample.png" class="kg-image" alt="sample" width="587" height="44" loading="lazy"></figure><p>"commit": agora que adicionamos os arquivos da nossa escolha, precisamos escrever uma mensagem para explicar o que fizemos. Essa mensagem pode ser útil mais tarde se quisermos verificar o histórico de alterações. Aqui está um exemplo do que podemos colocar no nosso caso.</p><pre><code>git commit -m "Adicionado arquivo HTML de amostra que contém sintaxe básica"
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/commit-1.png" class="kg-image" alt="commit-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/commit-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/commit-1.png 732w" sizes="(min-width: 720px) 720px" width="732" height="92" loading="lazy"></figure><ol><li>"push": agora podemos colocar nosso trabalho no GitHub. Para fazer isso, temos que fazer o 'push' de nossos arquivos para <em>remote</em>. <em>remote</em> é uma instância duplicada do nosso repositório que vive em algum lugar em um servidor remoto. Para fazer isso, devemos saber o nome do <em>remote</em> (na maioria das vezes o <em>remote</em> é chamado de <em>origin</em>). Para descobrir esse nome, digite o seguinte comando.</li></ol><pre><code>git remote
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/remote-1.png" class="kg-image" alt="remote-1" width="504" height="44" loading="lazy"></figure><p>Como você pode ver na imagem acima, é dito que o nome do nosso <em>remote</em> é <em>origin</em>. Agora, podemos fazer o 'push' do nosso trabalho com segurança pelo seguinte comando.</p><pre><code>git push origin master
</code></pre><p>Agora, se formos ao nosso repositório na página web do GitHub, podemos ver o arquivo <code>sample.html</code> que enviamos para o remoto — que é o GitHub!</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/push-1.png" class="kg-image" alt="push-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/push-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/push-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/push-1.png 1326w" sizes="(min-width: 720px) 720px" width="1326" height="828" loading="lazy"></figure><p><strong>OBSERVAÇÃO</strong>: às vezes, quando você está usando comandos Git no terminal, isso pode levar você ao editor de texto VIM (um editor de texto baseado em CLI). Para se livrar dele, você tem que digitar</p><pre><code>:q
</code></pre><p>e ENTER.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/-q.png" class="kg-image" alt="-q" width="161" height="23" loading="lazy"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/explanation.png" class="kg-image" alt="explanation" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/explanation.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/explanation.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/explanation.png 1200w" sizes="(min-width: 720px) 720px" width="1200" height="787" loading="lazy"><figcaption><em>Descrição de como pull e push funcionam</em></figcaption></figure><p>Fazer o '<em>pull</em>' é o ato de receber do GitHub.</p><p>Fazer o '<em>push</em>' é o ato de enviar para o GitHub.</p><h3 id="modo-2-trabalhe-no-seu-projeto-localmente-e-depois-crie-o-reposit-rio-no-github-e-envie-o-para-o-remoto-">Modo 2: trabalhe no seu projeto localmente e depois crie o repositório no GitHub e envie-o para o remoto.</h3><p>O modo 2 permite que você crie um repositório a partir de uma pasta existente no seu computador e o envie para o GitHub. Em muitos casos, você pode já ter criado algo no seu computador que deseja, de repente, transformar em um repositório no GitHub.</p><p>Vou explicar isso para você com um projeto de formulário de pesquisa que fiz anteriormente que não foi adicionado ao GitHub.</p><p>Como já mencionei, ao executar quaisquer comandos do Git, temos que garantir que estamos no diretório correto no terminal.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/type-2.png" class="kg-image" alt="type-2" width="583" height="34" loading="lazy"></figure><p>Por padrão, qualquer diretório no nosso computador não é um repositório do Git – mas podemos transformá-lo em um repositório do Git executando o seguinte comando no terminal.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/init.png" class="kg-image" alt="init" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/init.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/init.png 731w" sizes="(min-width: 720px) 720px" width="731" height="60" loading="lazy"></figure><p>Após converter nosso diretório para um repositório do Git, a primeira coisa que precisamos fazer é verificar os arquivos que temos usando o seguinte comando.</p><pre><code>git status
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/status-2.png" class="kg-image" alt="status-2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/status-2.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/status-2.png 693w" width="693" height="218" loading="lazy"></figure><p>Então, há dois arquivos nesse diretório que precisamos "adicionar" ao nosso repositório.</p><pre><code>git add [NOME_DO_ARQUIVO] [NOME_DO_ARQUIVO] [...]
</code></pre><p><strong>OBSERVAÇÃO</strong>: para "adicionar" todos os arquivos no nosso repositório, podemos usar o seguinte comando:</p><pre><code>git add .
</code></pre><p>Após a área de <em>stage</em> (o processo de adição) estar completa, podemos verificar se os arquivos foram adicionados com sucesso executando o <code>git status</code>.</p><p>Se esses arquivos específicos estiverem em verde, como na imagem abaixo, você fez seu trabalho!</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/green.png" class="kg-image" alt="green" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/green.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/green.png 694w" width="694" height="215" loading="lazy"></figure><p>Então, temos que fazer o "<em>commit</em>" com uma descrição.</p><pre><code>git commit -m "Adicionando formulário de pesquisa web"
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/survey-form.png" class="kg-image" alt="survey-form" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/survey-form.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/survey-form.png 725w" sizes="(min-width: 720px) 720px" width="725" height="111" loading="lazy"></figure><p>Se meu repositório começou no GitHub e se eu o clonar para meu computador, um <em>remote</em> já estará anexado a ele (modo 1). Se, no entanto, eu estiver começando o repositório no meu computador, ele não tem um <em>remote</em> associado a ele, então eu preciso adicionar esse <em>remote</em> (modo 2).</p><p>Para adicionar esse <em>remote</em>, precisamos ir ao GitHub primeiro. Crie um repositório e nomeie-o como quiser para armazená-lo no GitHub. Em seguida, clique no botão "Create repository".</p><p><strong>OBSERVAÇÃO</strong>: no modo 2, não inicialize o repositório com um arquivo README ao criar um repositório na página web do GitHub.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/new-repo-2.png" class="kg-image" alt="new-repo-2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/new-repo-2.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/new-repo-2.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/new-repo-2.png 1019w" sizes="(min-width: 720px) 720px" width="1019" height="833" loading="lazy"></figure><p>Depois de clicar no botão "Create repository", você verá a imagem abaixo como uma página da web.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/web-page.png" class="kg-image" alt="web-page" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/web-page.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/web-page.png 982w" sizes="(min-width: 720px) 720px" width="982" height="714" loading="lazy"></figure><p>Copie o endereço HTTPS. Agora, vamos criar o <em>remote</em> para nosso repositório.</p><pre><code>git remote add origin [ENDEREÇO HTTPS]
</code></pre><p>Após executar esse comando, podemos verificar se adicionamos o <em>remote</em> com sucesso usando o seguinte comando:</p><pre><code>git remote
</code></pre><p>Se ele exibir "<em>origin</em>", você adicionou o <em>remote</em> ao seu projeto.</p><p><strong>OBSERVAÇÃO</strong>: lembre-se de que podemos indicar qualquer nome para o <em>remote</em> alterando o nome "<em>origin</em>". Por exemplo:</p><pre><code>git remote add [NOME_DO_REMOTO] [ENDEREÇO HTTPS]
</code></pre><p>Agora, podemos enviar nosso projeto para o GitHub sem problemas!</p><pre><code>git push origin master
</code></pre><p>Após completar essas etapas uma por uma, se você for ao GitHub, encontrará seu repositório com os arquivos!</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/final.png" class="kg-image" alt="final" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/final.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/final.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/final.png 1121w" sizes="(min-width: 720px) 720px" width="1121" height="676" loading="lazy"></figure><h1 id="conclus-o"><strong>Conclusão</strong></h1><p>Obrigado a todos por lerem. Expliquei apenas o básico de Git e GitHub. Recomendo fortemente que todos leiam mais artigos relacionados a Git e GitHub. Espero que este artigo tenha ajudado.</p><p><a href="https://medium.com/@mvthanoshan9/ubuntu-a-beginners-guide-to-git-github-44a2d2fda0b8">Confira</a> o artigo original (em inglês) no Medium.</p><p><strong>Boa programação para você!</strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como usar o Git e o GitHub – controle de versão para iniciantes ]]>
                </title>
                <description>
                    <![CDATA[ Já pensou em como programadores guardam as diferentes versões do código que escrevem? É aí que entra o "controle de versão", uma ferramenta que salva o histórico do seu código, como se fosse um "control + z" turbinado. Com ele, você e sua equipe podem voltar atrás em qualquer mudança, ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-usar-o-git-e-o-github-controle-de-versao-para-iniciantes/</link>
                <guid isPermaLink="false">6689d63f23266d03fc8b845d</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Kris Lagerström ]]>
                </dc:creator>
                <pubDate>Sun, 21 Jul 2024 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2024/07/git-github.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/git-and-github-the-basics/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Use Git and GitHub – Version Control Basics for Beginners</a>
      </p><p>Já pensou em como programadores guardam as diferentes versões do código que escrevem? É aí que entra o "controle de versão", uma ferramenta que salva o histórico do seu código, como se fosse um "control + z" turbinado.</p><p>Com ele, você e sua equipe podem voltar atrás em qualquer mudança, como se fosse uma máquina do tempo para o seu código!</p><p>Existem três tipos principais de sistemas de controle de versão:</p><ul><li><strong>Sistemas locais:</strong> salvam as versões do código na sua própria máquina. É simples, mas se o computador der problema, já era!</li><li><strong>Sistemas centralizados:</strong> guardam tudo em um servidor central. É bom para colaboração, mas, se o servidor cair, ninguém trabalha!</li><li><strong>Sistemas distribuídos:</strong> cada desenvolvedor tem uma cópia completa do código. É o mais seguro e moderno.</li></ul><h2 id="certo-e-o-que-isso-tem-a-ver-com-o-git">Certo, e o que isso tem a ver com o Git?</h2><p>O Git é um sistema de controle de versão <strong>distribuído</strong>, gratuito e muito popular. Com ele, você salva "instantâneos" do seu código (chamados de <strong><em>commits</em></strong>) e pode voltar para qualquer um deles quando quiser.</p><p>Pense no Git como um álbum de figurinhas do seu código, onde cada figurinha representa uma mudança.</p><h2 id="o-que-o-github">O que é o GitHub?</h2><p>O GitHub é como se fosse uma rede social para o seu código do Git. É lá que você guarda seus projetos (chamados de <strong>repositórios</strong>) e mostra para o mundo (ou não, você escolhe!).</p><p>No GitHub, você pode:</p><ul><li>Trabalhar em equipe em um projeto, cada um com sua cópia, sem confusões.</li><li>"Clonar" o código de outros projetos e aprender com eles.</li><li>Mostrar seus projetos para futuros empregadores.</li></ul><h2 id="por-que-usar-o-github">Por que usar o GitHub?</h2><ul><li><strong>Organização:</strong> chega de pastas com nomes "projeto_final_versao_5_final_mesmo.zip"!</li><li><strong>Trabalho em equipe:</strong> programe junto com seus amigos sem dor de cabeça.</li><li><strong>Portfólio:</strong> mostre seus projetos para o mundo e impressione os recrutadores.</li></ul><h2 id="m-os-obra-configurando-o-git">Mãos à obra: configurando o Git</h2><ol><li><strong>Baixe o Git:</strong> vá no site oficial <a href="https://git-scm.com/">https://git-scm.com/</a> e baixe a versão para o seu sistema operacional (Windows, Mac ou Linux).</li><li><strong>Instale o Git:</strong> é só seguir as instruções do instalador.</li><li><strong>Configure o Git:</strong> abra o terminal (ou o Git Bash) e digite:</li></ol><pre><code class="language-bash">git config --global user.name "Seu Nome"
git config --global user.email "seu_e-mail@exemplo.com"
</code></pre><p>Substitua "Seu Nome" e "<a>seu_e-mail@exemplo.com</a>" por suas informações.</p><h2 id="criando-sua-conta-no-github">Criando sua conta no GitHub</h2><ol><li>Acesse o site <a href="https://github.com/">https://github.com/</a>.</li><li>Clique em "Sign up" (inscrever-se) no canto superior direito.</li><li>Preencha o formulário com seu e-mail, senha e nome de usuário.</li><li>Pronto! Você já faz parte da comunidade GitHub!</li></ol><h2 id="comandos-b-sicos-do-git">Comandos básicos do Git</h2><ul><li><code>git init</code>: cria um novo repositório Git na pasta atual.</li><li><code>git add</code>: adiciona suas mudanças na "área de preparação" (em inglês, <em>staging area</em>).</li><li><code>git commit -m "mensagem"</code>: salva suas mudanças com uma mensagem descrevendo o que você fez.</li><li><code>git clone [link do repositório]</code>: copia um repositório do GitHub para sua máquina.</li><li><code>git push</code>: envia suas mudanças para o GitHub.</li></ul><h2 id="conclus-o">Conclusão</h2><p>Este guia é uma introdução ao mundo do Git e GitHub. Agora, é hora de você colocar a mão na massa e começar a fazer o versionamento de seus projetos!</p><p>Lembre-se: errar faz parte do aprendizado. Não tenha medo de experimentar e explorar as funcionalidades do Git e do GitHub.</p><p>Boa programação para você!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Melhores práticas para o armazenamento seguro de chaves de API ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Bruno Pedro No passado, vi muita gente usar repositórios do Git para armazenar informações confidenciais relacionadas a seus projetos. Ultimamente, tenho visto algumas pessoas anunciarem que estão armazenando chaves de API em seus repositórios privados do GitHub. Estou escrevendo este artigo porque as pessoas devem entender os riscos ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/melhores-praticas-para-o-armazenamento-seguro-de-chaves-de-api/</link>
                <guid isPermaLink="false">655bec37f2994303ed3448db</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Mon, 20 Nov 2023 23:59:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/11/1_xw9gprMTI6h3U3NkKV0vUg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-securely-store-api-keys-4ff3ea19ebda/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Best practices for securely storing API keys</a>
      </p><p>Escrito por: Bruno Pedro</p><p>No passado, vi muita gente usar repositórios do Git para armazenar informações confidenciais relacionadas a seus projetos.</p><p>Ultimamente, tenho visto algumas pessoas anunciarem que estão armazenando chaves de API em seus repositórios privados do GitHub. Estou escrevendo este artigo porque as pessoas devem entender os riscos de armazenar chaves de API com seu código.</p><p>Este artigo não se destina a ser uma solução permanente para os problemas que você pode ter com o armazenamento de chaves de API. Em vez disso, é minha própria análise do problema e minhas sugestões sobre como corrigi-lo.</p><p>Então, qual é exatamente o problema de armazenar informações confidenciais com seu código em um repositório do Git?</p><h3 id="por-que-voc-n-o-deve-armazenar-chaves-de-api-em-reposit-rios-do-git">Por que você não deve armazenar chaves de API em repositórios do Git</h3><p>Armazenar chaves de API, ou qualquer outra informação confidencial, em um repositório do <code>git</code> é algo a ser evitado a todo custo. Mesmo que o repositório seja privado, você não deve vê-lo como um local seguro para armazenar informações confidenciais.</p><p>Vamos começar analisando por que é uma má ideia armazenar chaves de API em repositórios públicos do <code>git</code>.</p><p>Por natureza, um repositório público do <code>git</code> pode ser acessado por qualquer pessoa.</p><p>Em outras palavras, qualquer pessoa com uma conexão com a internet pode acessar o conteúdo de um repositório público do <code>git</code>. Não é só isso. Eles também podem navegar por todo o código dentro do repositório e possivelmente até executá-lo. Se você armazenar uma chave de API em um repositório público, estará publicando a céu aberto para que qualquer pessoa possa vê-la.</p><p>Uma pesquisa recente por <strong>client_secret</strong> no GitHub revelou que há mais de 30.000 confirmações que potencialmente expõem uma chave de API e um segredo. Em alguns casos, você só copia e cola o código para acessar imediatamente a API.</p><p>Esse problema está se tornando tão sério que algumas empresas investem em recursos para garantir que não haja chaves de API e segredos vazados.</p><p>No ano passado, o Slack começou a procurar por tokens de API expostos e a invalidá-los proativamente. Essa ação impede o acesso malicioso às contas do Slack, mas não é possível encontrar todos os tokens vazados.</p><p>Então, isso está acontecendo em repositórios públicos do git. Será que também acontece com os repositórios privados? Por que isso é um problema?</p><p>Repositórios privados do Git hospedados em serviços como GitHub, GitLab e Bitbucket estão expostos a um tipo diferente de risco. Quando você integra uma aplicação de terceiros com um dos serviços mencionados, você pode estar abrindo seus repositórios privados para esses terceiros. Essas aplicações poderão acessar seus repositórios privados e ler as informações contidas neles.</p><p>Embora isso por si só não crie um risco, imagine se uma dessas aplicações se tornar vulnerável a invasores. Ao obter acesso não autorizado a uma dessas aplicações de terceiros, os invasores podem obter acesso aos seus dados confidenciais, incluindo chaves de API e segredos.</p><h3 id="onde-ent-o-devemos-armazenar-as-chaves-de-api"><strong>Onde, então, devemos armazenar as chaves de API?</strong></h3><p>Existem muitas alternativas para armazenar chaves de API e segredos com segurança. Algumas delas permitem que você use seu repositório do Git e criptografe os dados confidenciais. Outras ferramentas são mais sofisticadas e descriptografam informações confidenciais como parte de um fluxo de trabalho de implantação. Vejamos algumas das soluções disponíveis.</p><p><code>git-remote-gcrypt</code></p><p>A primeira solução permite criptografar um repositório do Git inteiro. O <a href="https://github.com/spwhitton/git-remote-gcrypt">git-remote-gcrypt</a> faz isso adicionando funcionalidade aos auxiliares remotos do Git para que uma nova camada de transporte criptografada fique disponível. Os usuários só precisam configurar um novo controle remoto criptografado e enviar o código para ele.</p><p>Continue lendo se estiver procurando uma solução mais refinada que permita criptografar arquivos individuais.</p><p><strong><code>git-secret</code></strong></p><p>O <code><a href="http://git-secret.io/" rel="noopener">git-secret</a></code> é uma ferramenta que funciona em sua máquina local e criptografa arquivos específicos antes de enviá-los para seu repositório. Internamente, o <code>git-secret</code> é um script de shell que usa a GNU Privacy Guard (<a href="https://www.gnupg.org/" rel="noopener">GPG</a>) para criptografar e descriptografar arquivos que podem ter informações confidenciais.</p><h4 id="git-crypt"><strong><code>git-crypt</code></strong></h4><p>Outra solução é o <code><a href="https://www.agwa.name/projects/git-crypt/" rel="noopener">git-crypt</a></code>. É bastante parecido com o git-secret na maneira de operar, mas com algumas diferenças interessantes.</p><p>A primeira coisa a se perceber sobre o <code>git-crypt</code> é o fato de ele ser um executável binário, não um script de shell, como o git-secret. Por ser um executável binário, para usá-lo, é preciso primeiro compilá-lo ou encontrar uma distribuição binária para sua máquina.</p><p>Se estiver usando um Mac, você está com sorte, pois o <a href="https://brew.sh/" rel="noopener">HomeBrew</a> oferece um pacote do <code>git-crypt</code>, pronto para ser instalado. Você precisa apenas executar <code>brew install git-crypt</code> em um terminal.</p><h4 id="blackbox"><strong>BlackBox</strong></h4><p>O <a href="https://github.com/StackExchange/blackbox" rel="noopener">BlackBox</a> é uma ferramenta criada pelo <a href="https://stackoverflow.com/" rel="noopener">Stack Overflow</a>. Essa é a empresa por trás das conhecidas comunidades de perguntas e respostas como o próprio Stack Overflow, o Server Fault e o Super User. O BlackBox é uma ferramenta robusta, que funciona com o Git e com outros sistemas de controle de versão, como o Mercurial e o Subversion.</p><p>Ele também suporta a criptografia de pequenas cadeias de caracteres e não apenas arquivos inteiros. Ele faz isso ao trabalhar com o <a href="https://puppet.com/" rel="noopener">Puppet</a> e usa o <a href="https://docs.puppet.com/hiera/" rel="noopener">Hiera</a>, uma ferramenta de busca de chave-valor do Puppet para dados de configuração.</p><p>Por ter a capacidade de criptografar e descriptografar strings individuais, o BlackBox é uma ótima solução para garantir a segurança de chaves e segredos de API.</p><h4 id="configura-o-do-heroku-e-vari-veis-de-configura-o"><strong>Configuração do Heroku e variáveis de configuração</strong></h4><p>Se estiver trabalhando com o <a href="https://www.heroku.com/" rel="noopener">Heroku</a>, você não deve armazenar informações confidenciais, como chaves e segredos de API, em seus repositórios do Git. O Heroku oferece uma solução que permite que você <a href="https://devcenter.heroku.com/articles/config-vars" rel="noopener">defina as variáveis de configuração</a>.</p><p>Sua aplicação pode acessar o conteúdo dessas variáveis de configuração durante o tempo de execução, acessando as variáveis de ambiente correspondentes. Mesmo que os valores não sejam criptografados, essa solução permite que você evite usar seu repositório do Git para armazenar chaves de API.</p><p>O <a href="https://dokku.com/">Dokku</a>, uma solução de código aberto, como o Heroku, oferece as mesmas capacidades.</p><h4 id="segredos-do-docker"><strong>Segredos do Docker</strong></h4><p>Ao final do espectro de soluções possíveis, temos os <a href="https://docs.docker.com/engine/swarm/secrets/">segredos do Docker</a> (em inglês, <em>Docker secrets</em>). Essa solução <a href="https://blog.docker.com/2017/02/docker-secrets-management/" rel="noopener">foi apresentada pelo Docker</a> em fevereiro de 2017, tendo ganhado popularidade desde então.</p><p>Os segredos do Docker permitem que você defina variáveis criptografadas e que as disponibilize para serviços específicos durante o tempo de execução. Os segredos são criptografados durante o trânsito e em repouso.</p><p>Essa abordagem torna os segredos do Docker a solução perfeita para armazenar e usar chaves de API e segredos de maneira segura e criptografada.</p><h3 id="resumo"><strong>Resumo</strong></h3><p>Agora, você deve estar ciente dos perigos de armazenar informações confidenciais, como chaves de API e segredos em repositórios públicos e privados do Git.</p><p>Entender as possíveis maneiras pelas quais seus repositórios podem ser expostos é fundamental para avaliar e reduzir os riscos associados a vazamentos de informações.</p><p>Este artigo também propõe algumas soluções diferentes, que permitem criptografar chaves de API e segredos para que você possa usar com segurança seus repositórios de código.</p><p>Tenho certeza de que existem mais soluções por aí que podem ajudá-lo a alcançar os mesmos resultados.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Envios para o GitHub simplificados para os poetas ]]>
                </title>
                <description>
                    <![CDATA[ Quando comecei a enviar ativamente conteúdo para o GitHub usando os push, não fiz isso para contribuir com o código aberto (em inglês, Open Source), não enviei componentes nem nada parecido – eu enviei poemas. Fiz isso por ser o que eu mais amo depois de programar. Desde então, tenho ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/envios-para-o-github-simplificados-para-os-poetas/</link>
                <guid isPermaLink="false">652f0feeb73e2e03f70cedf6</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Tue, 17 Oct 2023 23:15:29 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/5f9ca19c740569d1a4ca4f9d.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/pushing-to-github-made-simple-enough-for-poets/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Pushing to Github - made simple enough for Poets</a>
      </p><p>Quando comecei a enviar ativamente conteúdo para o GitHub usando os <em>push</em>, não fiz isso para contribuir com o código aberto (em inglês, <em>Open Source</em>), não enviei componentes nem nada parecido – eu enviei poemas. Fiz isso por ser o que eu mais amo depois de programar. Desde então, tenho seguido muito feliz por ter tido a iniciativa de fazer meu primeiro <code>git commit</code>.</p><p>Quero mostrar o meu processo passo a passo para que novos programadores (e, espero eu, poetas), possam também se sentir à vontade trabalhando com o GitHub. Detalharei as várias maneiras de enviar conteúdo para o GitHub por <em>push</em>. Para fins deste artigo, assumirei que os leitores tenham alguma familiaridade com o uso do Terminal (seja o GitBash ou em algum outro formato).</p><hr><h3 id="enviando-conte-do-por-push-para-um-novo-reposit-rio-com-um-arquivo-readme"><strong>Enviando conteúdo por <em>push</em> para um novo repositório com um arquivo README</strong></h3><p>É preciso passar por alguns passos essenciais para fazer isso:</p><ul><li>Clicar no botão <em>Clone or download</em> na página do repositório.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/git-clone.png" class="kg-image" alt="git-clone" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/10/git-clone.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/10/git-clone.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2023/10/git-clone.png 1016w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><ul><li>Usar a opção <em>Clone with HTTPS</em>, copiando o link fornecido.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/git-clone2.png" class="kg-image" alt="git-clone2" width="600" height="400" loading="lazy"></figure><ul><li>Executar <code>git clone https://github.com/PerfilDoUsuario/repositorio.git</code> no terminal. Aqui, <strong><em>PerfilDoUsuario</em></strong> e <strong><strong><em><em>repositor</em></em></strong><em>io</em></strong> serão substituídos pelos valores fornecidos no link copiado.</li><li>Executar <code>git init</code> no terminal. Isso inicializará a pasta/repositório que você quer ter no sistema local do computador.</li><li>Executar <code>git add .</code> no terminal. Isso fará o rastreamento das alterações feitas na pasta em seu sistema desde o último <em>commit</em>. Se for a primeira vez que você estiver fazendo o <em>commit</em> de conteúdo para a pasta, tudo o que estiver nela será adicionado.</li><li>Execute <code>git commit -m "coloque uma mensagem aqui"</code>. Isso preparará as alterações adicionadas/rastreadas à pasta no sistema para fazer o <em>push</em> para o GitHub. Substitua <strong><em>coloque uma mensagem aqui</em></strong> por uma mensagem de <em>commit</em> relevante à sua escolha.</li><li>Execute <code>git push origin master</code>. Observe que a última palavra no comando, <strong><strong><em><em>master</em></em></strong></strong>, não é um nome fixo ao executar o <code>git push</code>. Esse nome pode ser substituído por qualquer "nome_de_branch" relevante.</li></ul><hr><h3 id="como-fazer-o-push-de-c-digo-para-um-novo-reposit-rio-do-github"><strong>Como fazer o <em>push </em>de código para um novo repositório do GitHub</strong></h3><blockquote><em><em>"</em>Programar é algo lindo<em>. </em>Todo mundo pode aprender a programar<em>!"</em></em></blockquote><p>O que você precisa fazer:</p><ul><li>Copiar o link de <code>HTTPS</code> fornecido.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/github-example.png" class="kg-image" alt="github-example" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/10/github-example.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/10/github-example.png 700w" width="600" height="400" loading="lazy"></figure><ul><li>Executar <code>git init</code> no terminal. Isso inicializará a pasta/repositório que você quer ter no sistema local do computador.</li><li>Executar <code>git add .</code> no terminal. Isso fará o rastreamento das alterações feitas na pasta em seu sistema desde o último <em>commit</em>. Se for a primeira vez que você estiver fazendo o <em>commit</em> de conteúdo para a pasta, tudo o que estiver nela será adicionado.</li><li>Execute <code>git commit -m "coloque uma mensagem aqui"</code>. Isso preparará as alterações adicionadas/rastreadas à pasta no sistema para fazer o <em>push</em> para o GitHub. Substitua <strong><em>coloque uma mensagem aqui</em></strong> por uma mensagem de <em>commit</em> relevante à sua escolha.</li><li>Execute <code>git remote add origin https://github.com/PerfilDoUsuario/exemplo.git</code> no terminal. Aqui, <strong><em>PerfilDoUsuario</em></strong> e <strong><strong><em><em>ex</em></em></strong><em>e</em><strong><em><em>mpl</em></em></strong><em>o</em></strong> serão substituídos pelos valores fornecidos no link copiado. Isso fará o <em>push </em>da pasta existente para o seu sistema local do computador para o repositório do GitHub <strong>recém-criado</strong>.</li><li>Execute <code>git remote -v</code>. Isso realiza um pouco da mágica do <strong><strong><em><em>git pull</em></em></strong></strong> e do <strong><strong><em><em>git push</em></em></strong></strong> garantindo que o conteúdo do novo repositório do GitHub, assim como da pasta no sistema, seja o mesmo.</li><li>Execute <code>git push origin master</code>. Observe que a última palavra no comando, <strong><strong><em><em>master</em></em></strong></strong>, não é um nome fixo ao executar o <code>git push</code>. Esse nome pode ser substituído por qualquer "nome_de_branch" relevante.</li></ul><hr><p>É isso! Acredito honestamente que qualquer um pode aprender a programar. Passei o último ano ensinando alunos de graduação na Nigéria sobre Desenvolvimento de Software. Em breve, iniciarei minha própria jornada como "Empreendedor em treinamento" na <strong><strong>Meltwater Entrepreneurial School of Technology.</strong></strong></p><blockquote>Comece a programar hoje mesmo!</blockquote> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Tags do Git explicadas: como listar, criar, remover e exibir tags no Git ]]>
                </title>
                <description>
                    <![CDATA[ Tags permitem que os desenvolvedores marquem pontos de verificação importantes no decorrer do desenvolvimento de seus projetos. Por exemplo, as versões de lançamento de software podem receber tags. (por exemplo, v1.3.2). Elas, essencialmente, permitem que você dê a um commit um nome especial (uma tag). Para exibir todas as tags ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/tags-do-git-explicadas-como-listar-criar-remover-e-exibir-tags-no-git/</link>
                <guid isPermaLink="false">64d3d861802b5c066d51a588</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Wed, 09 Aug 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/08/5f9c9dc7740569d1a4ca3993.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/git-tag-explained-how-to-add-remove/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Git Tag Explained: How to List, Create, Remove, and Show Tags in Git</a>
      </p><p><em>Tags</em> permitem que os desenvolvedores marquem pontos de verificação importantes no decorrer do desenvolvimento de seus projetos. Por exemplo, as versões de lançamento de software podem receber <em>tags</em>. (por exemplo, v1.3.2). Elas, essencialmente, permitem que você dê a um <em>commit </em>um nome especial (uma <em>tag</em>).</p><p>Para exibir todas as <em>tags </em>criadas em ordem alfabética:</p><pre><code class="language-bash">git tag</code></pre><p>Para obter mais informações sobre uma tag:</p><pre><code class="language-bash">git show v1.4</code></pre><p>Existem dois tipos de <em>tags</em>:</p><p>Com anotações</p><pre><code class="language-bash">git tag -a v1.2 -m "minha versão 1.4"</code></pre><p>Leve</p><pre><code class="language-bash">git tag v1.2</code></pre><p>Elas diferem no modo como são armazenadas. Elas criam <em>tags </em>em seu <em>commit</em> atual.</p><p>Caso você queira colocar uma <em>tag </em>em um <em>commit </em>anterior, especifique a ID do <em>commit </em>que deseja marcar:</p><pre><code class="language-bash">git tag -a v1.2 9fceb02</code></pre><p>Os nomes das <em>tags </em>podem ser usados em vez de IDs do <em>commit</em> durante o <em>check-out</em> e o <em>push </em>dos <em>commits</em> para um repositório remoto.</p><h4 id="para-mais-informa-es-em-ingl-s-"><strong><strong>Para mais informações (em inglês)<strong>:</strong></strong></strong></h4><ul><li><a href="https://git-scm.com/docs/git-tag">Documentação do Git</a></li><li><a href="https://git-scm.com/book/en/v2/Git-Basics-Tagging">Capítulo sobre tags no Git</a></li></ul><p>Você pode listar todas as <em>tags </em>disponíveis em um projeto com o comando <code>git tag</code> (note que elas aparecerão em ordem alfabética):</p><pre><code class="language-text">$ git tag
v1.0
v2.0
v3.0</code></pre><p>Essa maneira de listar <em>tags </em>é ótima para projetos pequenos, mas projetos maiores podem ter centenas de <em>tags</em>. Assim, talvez seja necessário filtrá-las ao procurar um ponto importante no histórico. Você pode encontrar <em>tags </em>contendo caracteres específicos adicionando um <code>-l</code> ao comando <code>git tag</code>:</p><pre><code class="language-text">$ git tag -l "v2.0*"
v2.0.1
v2.0.2
v2.0.3
v2.0.4</code></pre><h2 id="crie-uma-tag"><strong><strong><strong>Cr</strong>ie uma <em>tag</em></strong></strong></h2><p>Você pode criar dois tipos de <em>tags</em>: anotadas e leves. Elas são objetos concorrentes no banco de dados do GIT: elas recebem um <em>checksum</em>, solicitam uma mensagem (como os <em>commits</em>) e armazenam outros dados importantes, como nome, e-mail e data. Por outro lado, as <em>tags </em>leves não exigem uma mensagem nem armazenam outros dados, funcionando apenas como um ponteiro para um ponto específico no projeto.</p><h3 id="crie-uma-tag-com-anota-es"><strong><strong><strong>Cr</strong>ie uma <em>tag </em>com anotações</strong></strong></h3><p>Para criar uma <em>tag </em>com anotações, adicione <code>-a nome_da_tag -m "mensagem"</code> ao comando <code>git tag</code>:</p><pre><code class="language-text">$ git tag -a v4.0 -m "versão 4.0"
$ git tag
v1.0
v2.0
v3.0
v4.0</code></pre><p>Como você pode ver, o <code>-a</code> especifica que você está criando uma <em>tag </em>com anotações, depois vem o <code>nome_da_tag</code> e, finalmente, o <code>-m</code>, seguido pela <code>mensagem</code> a ser armazenada no banco de dados Git.</p><h3 id="crie-uma-tag-leve"><strong><strong><strong>Cr</strong>ie uma <em>tag </em>leve</strong></strong></h3><p>As <em>tags </em>leves contêm apenas o <em>checksum</em> (nenhuma outra informação é armazenada). Para criar um, basta executar o comando <code>git tag</code> sem outras opções (os caracteres <code>-lw</code> no final do nome são usados para indicar <em>tags </em>leves, mas você pode marcá-los como quiser):</p><pre><code class="language-text">$ git tag v4.1-lw
$ git tag
v1.0
v2.0
v3.0
v4.0
v4.1-lw</code></pre><p>Dessa vez, você não especificou uma mensagem ou outros dados relevantes. Portanto, a <em>tag </em>contém apenas o <em>checksum </em>referido.</p><h2 id="veja-os-dados-da-tag"><strong><strong><strong>V</strong>eja os dados da <em>tag</em></strong></strong></h2><p>Você pode executar o comando <code>git show</code> para exibir os dados armazenados em uma <em>tag</em>. No caso de <em>tags </em>com anotações, você verá os dados da <em>tag </em>e os dados do <em>commit</em>:</p><pre><code class="language-text">$ git show v4.0
tag v4.0
Tagger: John Cash &lt;john@cash.com&gt;
Date:   Mon Sat 28 15:00:25 2017 -0700

release version 4.0

commit da43a5fss745av88d47839247990022a98419093
Author: John Cash &lt;john@cash.com&gt;
Date:   Fri Feb 20 20:30:05 2015 -0700

  finished details</code></pre><p>Se a <em>tag </em>que você está procurando for uma <em>tag </em>leve, você verá apenas os dados do <em>commit</em> referido:</p><pre><code class="language-text">$ git show v1.4-lw
commit da43a5f7389adcb9201ab0a289c389ed022a910b
Author: John Cash &lt;john@cash.com&gt;
Date:   Fri Feb 20 20:30:05 2015 -0700

  finished details</code></pre><h2 id="colocando-tags-em-commits-antigos"><strong><strong>Colocando <em>tags </em>em <strong>commits</strong> antigos</strong></strong></h2><p>Você também pode marcar <em>commits </em>passados usando <code>git tag commit</code>. Para fazer isso, você precisará especificar o <em>checksum</em> (ou pelo menos uma parte dele) na linha de comando.</p><p>Primeiro, execute <code>git log</code> para descobrir o <em>checksum </em>necessário:</p><pre><code class="language-text">$ git log --pretty=oneline
ac2998acf289102dba00823821bee04276aad9ca added products section
d09034bdea0097726fd8383c0393faa0072829a7 refactorization
a029ac120245ab012bed1ca771349eb9cca01c0b modified styles
da43a5f7389adcb9201ab0a289c389ed022a910b finished details
0adb03ca013901c1e02174924486a08cea9293a2 small fix in search textarea styles</code></pre><p>Quando tiver o <em>checksum </em>de que precisa, adicione-o ao final da linha de criação da <em>tag</em>:</p><pre><code class="language-text">$ git tag -a v3.5 a029ac</code></pre><p>Você verá que a <em>tag </em>foi adicionada corretamente ao executar <code>git tag</code>:</p><pre><code class="language-text">$ git tag
v1.0
v2.0
v3.0
v3.5
v4.0
v4.1-lw</code></pre><h2 id="fa-a-o-push-das-tags"><strong><strong>Faça o p<strong>ush </strong>das <strong>tags</strong></strong></strong></h2><p>O Git não faz o <em>push </em>das <em>tags </em>por padrão ao executar o comando <code>git push</code>. Assim, para fazer o <em>push </em>das <em>tags </em>para um servidor, use o comando <code>git push origin</code>:</p><pre><code class="language-text">$ git push origin v4.0
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (18/18), 3.15 KiB | 0 bytes/s, done.
Total 18 (delta 4), reused 0 (delta 0)
To git@github.com:jcash/gitmanual.git
 * [new tag]         v4.0 -&gt; v4.0</code></pre><p>Você também pode usar a opção <code>--tags</code> para adicionar diversas <em>tags </em>ao mesmo tempo com o comando <code>git push origin</code>:</p><pre><code class="language-text">$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:jcash/gitmanual.git
 * [new tag]         v4.0 -&gt; v4.0
 * [new tag]         v4.1-lw -&gt; v4.1-lw</code></pre><h2 id="fa-a-o-check-out-das-tags"><strong><strong>Faça o <em>check-out</em> das<strong> </strong><em>t<strong>ags</strong></em></strong></strong></h2><p>Você pode usar o comando <code>git checkout</code> para fazer o <em>check-out</em> de uma <em>tag </em>como você normalmente faz. É necessário, porém, lembrar que isso resultará em um estado <em><em>HEAD</em></em> separado.</p><pre><code class="language-text">$ git checkout v0.0.3
Note: checking out 'v0.0.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.</code></pre><h2 id="exclua-uma-tag"><strong><strong>Exclua uma <em>t<strong>ag</strong></em></strong></strong></h2><p>Você se verá em situações onde vai querer excluir <em>tags</em>. Existe um comando muito útil para esses casos:</p><pre><code class="language-text">$ git tag --delete v0.0.2
$ git tag
v0.0.1
v0.0.3
v0.0.4</code></pre><h3 id="para-mais-informa-es-em-ingl-s--1"><strong><strong>Para mais informações (em inglês):</strong></strong></h3><ul><li><a href="https://git-scm.com/book/en/v2/Git-Basics-Tagging">Git Pro - o básico sobre tags</a></li><li><a href="https://git-scm.com/docs/git-tag">Git Pro - documentação</a></li><li><a href="https://githowto.com/tagging_versions">Git HowTo</a></li><li><a href="http://alblue.bandlem.com/2011/04/git-tip-of-week-tags.html">Dicas de Git: Tags</a></li><li><a href="https://www.drupal.org/node/1066342">Criando uma tag</a></li></ul><h3 id="fontes-em-ingl-s-"><strong><strong>Fontes (em inglês):</strong></strong></h3><p>Documentação do Git: <a href="https://git-scm.com/book/en/v2/Git-Basics-Tagging">tags</a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como fazer o seu primeiro pull request no GitHub ]]>
                </title>
                <description>
                    <![CDATA[  O que significa fork? Fork, ou bifurcação, é quando gostamos tanto do repositório de alguém e gostaríamos de tê-lo em nossa conta do GitHub, nós o copiamos para que possamos trabalhar com ele separadamente.  Quando copiamos um repositório, obtemos uma versão desse repositório inteiro com todo o seu ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-fazer-o-seu-primeiro-pull-request-no-github/</link>
                <guid isPermaLink="false">641e473402ec1d064260eac4</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Viviane Martini ]]>
                </dc:creator>
                <pubDate>Tue, 09 May 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Untitled-design.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to make your first pull request on&nbsp;GitHub</a>
      </p><p></p><h2 id="o-que-significa-fork"><strong>O que significa <em>fork</em>?</strong></h2><p><em>Fork</em>, ou bifurcação, é quando gostamos tanto do repositório de alguém e gostaríamos de tê-lo em nossa conta do GitHub, nós o copiamos para que possamos trabalhar com ele separadamente. </p><p>Quando copiamos um repositório, obtemos uma versão desse repositório inteiro com todo o seu histórico. Após a cópia, podemos fazer o que quisermos sem afetar a versão original.</p><h2 id="o-que-um-pull-request"><strong>O que é um <em>pull request</em>?</strong></h2><p>O<em> pull request </em>(algo como 'solicitação de envio', em português)<em> </em>é a maneira como contribuímos para projetos de grupo ou projetos de código aberto (<em>open source</em>). </p><p>Por exemplo, um usuário Harry copia um repositório de ThanoshanMV e faz alterações nesse repositório. Agora, Harry pode fazer um <em>pull request</em> para ThanoshanMV, mas cabe a ThanoshanMV aceitá-lo ou recusá-lo. É como dizer: "ThanoshanMV, você poderia aceitar minhas alterações, por favor?"</p><h2 id="o-que-significa-contribuir"><strong>O que significa contribuir</strong></h2><p>Podemos contribuir para um projeto <em>open source</em> de diversas maneiras, além do código. Algumas dessas maneiras são descritas abaixo.</p><p>Como diz o guia inicial de <em>hacktitude</em> da empresa de tecnologia <a href="https://www.99xtechnology.com/" rel="noopener">99xtechnology</a>, podemos contribuir para um projeto <em>open source</em> das seguintes maneiras:</p><ol><li>Design: você pode criar os <em>layouts </em>de um projeto para melhorar sua usabilidade, melhorar a navegação e o menu do projeto com base em programas de pesquisa do usuário, criar arte para logotipos ou camisetas e fornecer guias de estilo para o projeto.</li><li>Redação: você pode escrever e melhorar a documentação do projeto ou traduzir a documentação, iniciar um boletim informativo <em>(newsletter)</em> para o projeto ou escrever tutoriais para ele, selecionar destaques da lista de discussão ou analisar uma pasta de exemplos mostrando como os projetos são usados.</li><li>Organização: você pode vincular <em>issues</em> duplicadas, sugerir novos <em>labels</em> para as <em>issues</em>, sugerir o fechamento de <em>issues </em>antigas abertas e fazer perguntas sobre <em>issues </em>abertas recentemente para levar a discussão adiante.</li><li>Ajude os outros: responda a perguntas sobre <em>issues </em>em aberto, revise o código nos envios de outras pessoas e ofereça-se para orientar outro colaborador.</li><li>Código: ajude a resolver <em>issues</em> em aberto, pergunte se você pode fornecer novos recursos e melhorar ferramentas e testes.</li></ol><h2 id="vamos-fazer-nosso-primeiro-pull-request-"><strong>Vamos fazer nosso primeiro <em>pull request</em>!</strong></h2><p>Se você não está muito familiarizado com o Git e o GitHub, revise o seguinte material: <em><a href="https://www.freecodecamp.org/news/the-beginners-guide-to-git-github/">The beginner’s guide to Git &amp; GitHub</a></em> (texto em inglês)<em>.</em></p><h3 id="1-fa-a-uma-c-pia-do-reposit-rio"><strong>1. Faça uma cópia do repositório</strong></h3><p>Primeiro, copie o (faça o <em>fork do)</em> repositório. Basta clicar no botão <strong>Fork</strong> no topo da página. Isso vai criar uma versão de todo o repositório na sua conta.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/fork-1.png" class="kg-image" alt="fork-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/fork-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/fork-1.png 636w" width="636" height="311" loading="lazy"></figure><h3 id="2-clone-o-reposit-rio"><strong>2. Clone o repositório</strong></h3><p>Quando o repositório estiver na sua conta, clone-o em sua máquina para trabalhar com ele localmente.</p><p>Para clonar, clique no botão<strong> Clone </strong>e copie o link.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/clone1.png" class="kg-image" alt="clone1" width="490" height="214" loading="lazy"></figure><p>Abra o terminal e execute o seguinte comando. Ele clonará o repositório localmente.</p><pre><code>$ git clone [link do github]</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/clone2.png" class="kg-image" alt="clone2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/clone2.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/clone2.png 652w" width="652" height="175" loading="lazy"></figure><p>Agora, configuramos uma cópia da <em>branch master</em> do repositório principal no projeto on-line.</p><p>Precisamos ir para esse diretório clonado. Para isso, executamos este comando:</p><pre><code>$ cd [NOME DO REPOSITORIO]</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/clone3.png" class="kg-image" alt="clone3" width="462" height="74" loading="lazy"></figure><h3 id="3-crie-uma-branch"><strong>3. Crie uma <em>branch</em></strong></h3><p>É uma boa prática criar uma outra <em>branch</em> ao trabalhar com repositórios, seja em um pequeno projeto ou contribuindo para o trabalho de um grupo.</p><p>O nome da <em>branch </em>deve ser curto e deve refletir o trabalho que estamos fazendo</p><p>Agora crie uma <em>branch </em>usando o comando <code>git checkout</code>:</p><pre><code>$ git checkout -b [Nome da branch]</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/branch1.png" class="kg-image" alt="branch1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/branch1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/branch1.png 715w" width="715" height="85" loading="lazy"></figure><h3 id="4-fa-a-mudan-as-e-fa-a-o-commit-delas"><strong>4. Faça mudanças e faça o <em>commit </em>delas</strong></h3><p>Faça alterações essenciais no projeto e salve-o.</p><p>Em seguida, execute &nbsp;<code>git status</code> e você verá as alterações.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/status.png" class="kg-image" alt="status" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/status.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/status.png 715w" width="715" height="208" loading="lazy"></figure><p>Adicione essas alterações na <em>branch </em>que você acabou de criar usando o comando &nbsp;<code>git add</code>:</p><pre><code>$ git add .</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/add1.png" class="kg-image" alt="add1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/add1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/add1.png 714w" width="714" height="211" loading="lazy"></figure><p>Agora, confirme essas alterações usando o comando <code>git commit</code> :</p><pre><code>$ git commit -m "Adicionando um artigo à semana 02 dos artigos da semana."</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/commit.png" class="kg-image" alt="commit" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/commit.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/commit.png 717w" width="717" height="101" loading="lazy"></figure><h3 id="5-fa-a-o-push-das-mudan-as-para-o-github"><strong>5. Faça o <em>push </em>das mudanças para o GitHub</strong></h3><p>Para enviar as alterações para o GitHub, precisamos identificar o nome do repositório remoto.</p><pre><code>$ git remote</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/remote.png" class="kg-image" alt="remote" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/remote.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/remote.png 712w" width="712" height="83" loading="lazy"></figure><p>O nome deste repositório remoto é "<em>origin</em>". </p><p>Depois de identificar o nome do repositório remoto, podemos enviar/fazer um <em>push</em> com segurança essas alterações para o GitHub.</p><pre><code>git push origin [Nome da branch]</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/branch2.png" class="kg-image" alt="branch2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/branch2.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/branch2.png 717w" width="717" height="306" loading="lazy"></figure><h3 id="6-criando-o-pull-request"><strong>6. Criando o <em>pull request</em></strong></h3><p>Vá para o seu repositório no GitHub e você verá um botão dizendo "<strong>Compare &amp; pull request</strong>". Clique nele.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/compare.png" class="kg-image" alt="compare" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/compare.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/compare.png 984w" sizes="(min-width: 720px) 720px" width="984" height="269" loading="lazy"></figure><p>Forneça os detalhes necessários sobre o que você fez (você pode fazer referência às issues usando "#"). Agora, envie o <em>pull request</em>.</p><p>Parabéns! Você acaba de fazer o seu primeiro <em>pull request</em>.🎉</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/pullRequest-1.png" class="kg-image" alt="pullRequest-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/pullRequest-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/pullRequest-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/pullRequest-1.png 1071w" sizes="(min-width: 720px) 720px" width="1071" height="658" loading="lazy"></figure><p>Se seu <em>pull request</em> for aceito, você receberá um e-mail.</p><h3 id="7-sincronize-a-sua-vers-o-com-a-branch-master"><strong>7. Sincronize a sua versão com a <em>branch master</em> </strong></h3><p>Antes de enviar qualquer <em>pull request</em> para o repositório original, você deve sincronizar seu repositório com o original.</p><p>Mesmo se você não enviar um <em>pull request</em> para o repositório original, é melhor sincronizar seu repositório com o original, pois alguns recursos adicionais e correções de bugs podem ter sido feitos desde que você o copiou.</p><p>Siga estas etapas para atualizar/sincronizar essas alterações em sua <em>branch master</em>:</p><ol><li>Primeiro, verifique em qual <em>branch </em>você está.</li></ol><pre><code>$ git branch</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/branch4.png" class="kg-image" alt="branch4" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/branch4.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/branch4.png 715w" width="715" height="89" loading="lazy"></figure><p>Ele listará todas as <em>branches </em>e indicará a <em>branch </em>atual ou ativa em verde.</p><p>2. Alterne para a <em>branch </em>master. </p><pre><code>$ git checkout master</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/master9.png" class="kg-image" alt="master9" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/master9.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/master9.png 717w" width="717" height="89" loading="lazy"></figure><p>3. Adicione o repositório original como um repositório <em>upstream</em>.</p><p>Para extrair as alterações do repositório original para sua versão copiada, você precisa adicionar o repositório Git original como um repositório <em>upstream</em>.</p><pre><code>$ git remote add upstream [HTTPS]</code></pre><p>Aqui, [HTTPS] é o URL que você deve copiar do repositório do proprietário.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/owner-repo.png" class="kg-image" alt="owner-repo" width="471" height="208" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/remote-add.png" class="kg-image" alt="remote-add" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/remote-add.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/remote-add.png 825w" sizes="(min-width: 720px) 720px" width="825" height="46" loading="lazy"></figure><p>4. Faça o <em>fetch</em>/obtenha o repositório.</p><p>Busque todas as alterações do repositório original. Os <em>commits </em>para o repositório original serão armazenados em uma <em>branch </em>local chamada <em>upstream</em>/<em>master</em>.</p><pre><code>$ git fetch upstream</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/fetch.png" class="kg-image" alt="fetch" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/fetch.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/fetch.png 718w" width="718" height="98" loading="lazy"></figure><p>5. Faça o <em>merge</em>/mescle as <em>branches</em>.</p><p>Mescle as alterações do <em>upstream</em>/<em>master</em> em sua <em>branch master</em> local. Isso fará com que a <em>branch master</em> do seu <em>fork</em> seja sincronizada com o repositório <em>upstream </em>sem perder suas alterações locais.</p><pre><code>$ git merge upstream/master</code></pre><p>6. Faça o <em>push</em>/envie mudanças ao GitHub</p><p>Neste ponto, sua <em>branch </em>local é sincronizada com a <em>branch master </em>do repositório original. Se você deseja atualizar o repositório do GitHub, precisa enviar suas alterações.</p><pre><code>$ git push origin master</code></pre><p><strong>Observação<strong>:</strong></strong> depois de sincronizar o <em>fork </em>da sua <em>branch master </em>copiada, você pode remover esse repositório remoto, se desejar, mas você também precisará atualizar/sincronizar seu repositório no futuro, então é melhor mantê-lo.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/remote-dlt.png" class="kg-image" alt="remote-dlt" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/remote-dlt.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/remote-dlt.png 826w" sizes="(min-width: 720px) 720px" width="826" height="112" loading="lazy"></figure><pre><code>$ git remote rm [Nome remoto]</code></pre><h3 id="8-delete-a-branch-desnecess-ria"><strong>8. Delete a <em>branch </em>desnecessária</strong></h3><p>As <em>branches </em>são criadas para um propósito especial. Uma vez que esse objetivo é alcançado, essas <em>branches </em>não são necessárias, então você pode excluí-las.</p><pre><code>$ git branch -d [Nome da branch]</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/delete.png" class="kg-image" alt="delete" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/delete.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/delete.png 716w" width="716" height="157" loading="lazy"></figure><p>Você também pode excluir a versão dele no GitHub.</p><pre><code>git push origin --delete [Nome da branch]</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/last.png" class="kg-image" alt="last" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/last.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/last.png 796w" sizes="(min-width: 720px) 720px" width="796" height="132" loading="lazy"></figure><h2 id="conclus-o"><strong>Conclusão</strong></h2><p>O GitHub é uma ferramenta poderosa para controlar o histórico de versões. Todos podem contribuir com projetos <em>open source</em> fazendo <em>pull requests</em>. Contribuições nem sempre são código – existem outras maneiras de contribuir também. </p><p>Por fim, devo dizer que você não deve se preocupar se seus <em>pull requests</em> forem rejeitados. Os mantenedores gastam muito tempo melhorando seus projetos e sabem muito mais sobre seus projetos do que nós. Portanto, não se preocupe se sua solicitação não for mesclada.</p><blockquote>Mantenha-se forte, mantenha-se positivo e nunca desista.<br>― Roy T. Bennett, <a href="https://www.goodreads.com/work/quotes/49604402" rel="noopener">The Light in the Heart</a></blockquote><p>Este artigo foi publicado originalmente no <a href="https://medium.com/@mvthanoshan9/how-to-make-your-first-pull-request-on-github-9aefca5cc837">Medium</a>.</p><p>Você pode entrar em contato com o autor e se conectar com ele pelo <a href="https://twitter.com/ThanoshanMV" rel="noopener">Twitter</a>.<br><strong>Continue contribuindo com o mundo <em>open source</em>!</strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Um guia para os iniciantes em Git — o que é um changelog e como gerá-lo ]]>
                </title>
                <description>
                    <![CDATA[ Se você é um desenvolvedor e usa o Git em um de seus projetos, pode ser que queira compartilhar com seus usuários as alterações que fez, mas não sabe como fazer isso. Bem, este artigo é para você. Em outro momento em minha série de artigos, compartilhei como escrever uma ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/um-guia-para-os-iniciantes-em-git-o-que-e-um-changelog-e-como-gera-lo/</link>
                <guid isPermaLink="false">640e16b87d24e5052173a1f7</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Sun, 12 Mar 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/03/what-is-a-changelog-and-how-to-generate-it.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/a-beginners-guide-to-git-what-is-a-changelog-and-how-to-generate-it/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">A Beginner’s Guide to Git — What is a Changelog and How to Generate it</a>
      </p><p>Se você é um desenvolvedor e usa o Git em um de seus projetos, pode ser que queira compartilhar com seus usuários as alterações que fez, mas não sabe como fazer isso. Bem, este artigo é para você.</p><p>Em outro momento em minha série de artigos, compartilhei <a href="https://herewecode.io/blog/a-beginners-guide-to-git-how-to-write-a-good-commit-message/">como escrever uma boa mensagem de <em>commit</em></a> (texto em inglês).</p><p>Já mostrei os benefícios de se escrever uma boa mensagem de <em>commit</em>, bem como já havia mencionado a possibilidade de gerar um <em>changelog </em>(em português, algo como um registro das alterações).</p><p>Neste artigo, você saberá o que é um <em>changelog</em> e verá duas maneiras de gerá-lo – uma simples e outra um pouco mais sofisticada.<br></p><h2 id="o-que-um-changelog"><strong>O que é um <em>changelog</em>?</strong></h2><p>Um <em>changelog </em>é um arquivo que compartilha uma lista cronologicamente ordenada das alterações qu você realizou em seu projeto. Ele geralmente é organizado por versão, com a data seguida de uma lista de recursos adicionados, melhorados ou removidos.</p><p>Em geral, há duas maneiras de se escrever um <em>changelog</em>:</p><ul><li>a maneira comum: criar um arquivo de texto e começar a enumerar todas as alterações com uma data específica</li><li>a escolha do desenvolvedor (também conhecida como o modo fácil): gerar automaticamente o <em>changelog </em>a partir de suas mensagens de <em>commit</em>. A boa notícia é que será exatamente essa a maneira que você aprenderá neste artigo!</li></ul><blockquote>"Um changelog é um relato ou registro de todas as alterações importantes feitas em um projeto. O projeto geralmente é um site da web ou um projeto de software. O changelog frequentemente inclui registros de alterações como consertos de bugs, novos recursos e assim por diante." – <a href="https://pt.wikipedia.org/wiki/Registro_de_altera%C3%A7%C3%B5es">Wikipédia</a></blockquote><h3 id="por-que-ele-essencial"><strong>Por que ele é essencial?</strong></h3><p>Imagino que, nesse momento, você esteja se perguntando o porquê de ele ser essencial e por que dedicar um tempo para sua criação.</p><p>Um <em>changelog </em>é uma espécie de resumo de todas as suas alterações. Ele deve ser fácil de entender para os usuários de seu projeto e para os desenvolvedores que trabalharem nele.</p><p>Em um mundo onde tudo se desenvolve rapidamente, o usuário precisa saber se o site da web/software que ele está usando passou por alterações. Você pode se surpreender por isso, mas há quem adore ler publicações em blogs ou páginas de atualizações dos sites da web.</p><p>Para um desenvolvedor, por exemplo, se o projeto for grande, pode ser interessante saber como o software no qual ele está trabalhando vem evoluindo.</p><p>Se, em contrapartida, você estiver trabalhando em um projeto de código aberto (do inglês, <em>open-source</em>), você poderá encontrar um arquivo "CHANGELOG.md" no repositório do GitHub. O objetivo desse arquivo é informar os colaboradores sobre as atualizações mais recentes do projeto.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/03/angularjs-changelog.png" class="kg-image" alt="angularjs-changelog" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/03/angularjs-changelog.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/03/angularjs-changelog.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2023/03/angularjs-changelog.png 1450w" sizes="(min-width: 1200px) 1200px" width="1450" height="1710" loading="lazy"><figcaption>CHANGELOG.md do <a href="https://github.com/angular/angular/blob/master/CHANGELOG.md">repositório do Angular.js no GitHub</a></figcaption></figure><h3 id="onde-eu-posso-encontr-lo"><strong>Onde eu posso encontrá-lo?</strong></h3><p>Você verá <em>changelogs</em> em todo o lugar! Claro, eles, frequentemente, têm estilos diferentes e se encontram em locais diferentes, mas eles estão (ou deveriam estar), literalmente, em todos os projetos.</p><p>Criei aqui uma lista com alguns lugares onde você pode encontrar um <em>changelog</em>.</p><ul><li>Uma publicação em blog: um <em>changelog</em> pode ser entregue como um artigo compartilhando os últimos recursos, ponto a ponto.</li><li>Um arquivo "CHANGELOG.md" no repositório do GitHub.</li><li>Uma seção de <em>Changelog</em> no seu site da web/software favorito. <a href="https://ticktick.com/public/changelog/en.html">Aqui temos um exemplo com uma ferramenta de gerenciamento de tarefas, o TickTick</a>.</li><li>Na seção "What's new" (em português, novidades) nas lojas do Android e do IOS.</li></ul><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/03/ticktick-android-changelog.png" class="kg-image" alt="ticktick-android-changelog" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/03/ticktick-android-changelog.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/03/ticktick-android-changelog.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2023/03/ticktick-android-changelog.png 1352w" sizes="(min-width: 1200px) 1200px" width="1352" height="426" loading="lazy"><figcaption>Seção "What's new" do TickTick no Android</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/03/ticktick-ios-changelog.png" class="kg-image" alt="ticktick-ios-changelog" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/03/ticktick-ios-changelog.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/03/ticktick-ios-changelog.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2023/03/ticktick-ios-changelog.png 1410w" sizes="(min-width: 1200px) 1200px" width="1410" height="328" loading="lazy"><figcaption>Seção "What's new" do TickTick no iOS</figcaption></figure><h2 id="gera-o-autom-tica-do-changelog"><strong>Geração automática do <em>changelog</em></strong></h2><p>Nesta parte, vamos gerar juntos nosso primeiro <em>changelog</em>.</p><p>Ao fazer isso, você entenderá a razão pela qual pode ser útil fazer os <em>commits</em> e suas mensagens seguindo algumas regras.</p><p>Um <em>commit </em>excelente e explícito não precisa ser modificado e pode ser adicionado diretamente ao <em>changelog</em>.</p><p>Se estiver interessado em gerar um arquivo necessário sem o personalizar ou estilizar, recomendo a primeira maneira. Do contrário, a segunda é melhor.</p><p><strong>Observação</strong>: alguns sites da web, como o <a href="https://keepachangelog.com/">Keep A Changelog</a>, explicam que você não deve fazer um <em>changelog </em>simplesmente copiando e colando as mensagens de <em>commit </em>do Git (veja a maneira simples). De fato, eu recomendo tentar evitar essa maneira se estiver trabalhando em um produto profissional.</p><p>No entanto, hoje em dia, existem alguns geradores avançados que permitem que você transforme seus logs do Git em <em>changelogs </em>(veja a maneira sofisticada).</p><h3 id="como-gerar-um-changelog-a-maneira-simples-"><strong>Como gerar um <em>changelog </em>(a maneira simples)</strong></h3><p>Se você usar a primeira maneira, não há pré-requisitos a cumprir. Tudo o que você precisa fazer é digitar alguns comandos no repositório do Git.</p><p>Apenas para lembrar, ao digitar "git log", uma lista de todos os seus <em>commits </em>é exibida.</p><pre><code>$ git log

// Resultado
commit f6986f8e52c1f889c8649ec75c5abac003102999 (HEAD -&gt; master, origin/master, origin/HEAD)
Author: Sam Katakouzinos &lt;sam.katakouzinos@gmail.com&gt;
Date:   Tue Mar 10 11:41:18 2020 +1100

    docs(developers): commit message format typo
    
    Any line of the commit message cannot be longer *than* 100 characters!
    
    Closes #17006

commit ff963de73ab8913bce27a1e75ac01f53e8ece1d9
Author: Chives &lt;chivesrs@gmail.com&gt;
Date:   Thu Feb 6 19:05:57 2020 -0500

    docs($aria): get the docs working for the service
    
    Closes #16945

commit 2b28c540ad7ebf4a9c3a6f108a9cb5b673d3712d
Author: comet &lt;hjung524@gmail.com&gt;
Date:   Mon Jan 27 19:49:55 2020 -0600

    docs(*): fix spelling errors
    
    Closes #16942</code></pre><p>Esse comando pode receber alguns parâmetros. Usaremos esses parâmetros para alterar o resultado e para obter uma versão melhorada para gerar nosso <em>changelog</em>.</p><p>Ao digitar o comando a seguir, você terá como resultado um <em>commit </em>por linha.</p><pre><code>$ git log --oneline --decorate

// Resultado
f6986f8e5 (HEAD -&gt; master, origin/master, origin/HEAD) docs(developers): commit message format typo
ff963de73 docs($aria): get the docs working for the service
2b28c540a docs(*): fix spelling errors
68701efb9 chore(*): fix serving of URI-encoded files on code.angularjs.org
c8a6e8450 chore(package): fix scripts for latest Node 10.x on Windows
0cd592f49 docs(angular.errorHandlingConfig): fix typo (wether --&gt; whether)
a4daf1f76 docs(angular.copy): fix `getter`/`setter` formatting
be6a6d80e chore(*): update copyright year to 2020
36f17c926 docs: add mention to changelog
ff5f782b2 docs: add mention to changelog
27460db1d docs: release notes for 1.7.9
add78e620 fix(angular.merge): do not merge __proto__ property</code></pre><p>Já ficou melhor, mas vamos ver o que podemos fazer além disso.</p><pre><code>$ git log --pretty="%s"

// Resultado
docs(developers): commit message format typo
docs($aria): get the docs working for the service
docs(*): fix spelling errors
chore(*): fix serving of URI-encoded files on code.angularjs.org
chore(package): fix scripts for latest Node 10.x on Windows
docs(angular.errorHandlingConfig): fix typo (wether --&gt; whether)
docs(angular.copy): fix `getter`/`setter` formatting
chore(*): update copyright year to 2020
docs: add mention to changelog
docs: add mention to changelog
docs: release notes for 1.7.9
fix(angular.merge): do not merge __proto__ property</code></pre><p>Com ele, você pode imprimir a lista dos <em>commits </em>no estilo que você quiser.</p><p>O "%s" corresponde ao próprio título do <em>commit</em>. Você pode modificar a string para estilizar seu <em>commit </em>como quiser.</p><p>Em nosso caso, queremos criar uma lista.</p><pre><code>$ git log --pretty="- %s"

// Resultado
- docs(developers): commit message format typo
- docs($aria): get the docs working for the service
- docs(*): fix spelling errors
- chore(*): fix serving of URI-encoded files on code.angularjs.org
- chore(package): fix scripts for latest Node 10.x on Windows
- docs(angular.errorHandlingConfig): fix typo (wether --&gt; whether)
- docs(angular.copy): fix `getter`/`setter` formatting
- chore(*): update copyright year to 2020
- docs: add mention to changelog
- docs: add mention to changelog
- docs: release notes for 1.7.9
- fix(angular.merge): do not merge __proto__ property</code></pre><p>Você conseguiu! Acaba de criar um <em>changelog </em>simples.</p><p><strong>Observação</strong>: se ainda quiser ir mais longe e salvar seu <em>changelog </em>mais rapidamente, em vez de copiar e colar o resultado em um arquivo, redirecione o resultado para um arquivo em seu terminal, digitando <code>git log --pretty="- %s" &gt; CHANGELOG.md</code></p><h3 id="como-gerar-um-changelog-a-maneira-sofisticada-"><strong>Como gerar um <em>changelog </em>(a maneira sofisticada)</strong></h3><p><strong><strong>Pr</strong>é-<strong>requisit</strong>o<strong>s</strong></strong></p><p>Agora, trataremos de uma maneira sofisticada de gerar um <em>changelog</em>. A ideia por trás do processo segue a mesma, mas, desta vez, usaremos outras ferramentas para nos ajudar.</p><p><a href="https://herewecode.io/blog/a-beginners-guide-to-git-how-to-write-a-good-commit-message/">Na parte anterior desta série que mencionei previamente</a>, eu escrevi sobre diretrizes do Git.</p><p><strong>Observação</strong>: as diretrizes do Git são um conjunto de regras para escrever mensagens de <em>commit </em>melhores. Essas diretrizes ajudarão você a adicionar um pouco de estrutura aos <em>commits</em>.</p><p>Ao usar uma diretriz para o seu projeto, você pode usar ferramentas para gerar um <em>changelog</em>. Na maioria das vezes, essas ferramentas são melhores, pois permitem que você crie um <em>changelog </em>formatado em <em>markdown</em>.</p><p>Neste exemplo, usaremos um gerador simples, que funciona com a maioria das diretrizes. Seu nome é "<a href="https://github.com/lob/generate-changelog">generate-changelog</a>" e ele está disponível no NPM (o gerenciador de pacotes do Node).</p><p>Essa ferramenta criará um <em>changelog </em>estilizado, mas não é a ferramenta com o maior número de recursos. Decidi usá-la, pois é um exemplo excelente para um iniciante. Se quiser se aprofundar, consulte a lista de ferramentas de <em>changelog </em>abaixo:</p><p>Aqui temos algumas ferramentas que você pode usar:</p><ul><li><a href="https://github.com/github-changelog-generator/github-changelog-generator">Github Changelog Generator</a></li><li><a href="https://github.com/git-chglog/git-chglog">Git Chglog</a></li><li><a href="https://github.com/CookPete/auto-changelog">Auto Changelog</a></li><li><a href="https://github.com/conventional-changelog/conventional-changelog">Conventional Changelog</a></li></ul><blockquote>Observação: antes de instalar a ferramenta, você precisa ter o NPM instalado em seu computador. Se ainda não o tem,<a href="https://www.npmjs.com/get-npm"> convido você a </a><a href="https://www.npmjs.com/get-npm">visitar o site oficial da web</a> (ele ajudará na instalação do Node e do NPM).</blockquote><p>Para instalar o pacote em seu computador, digite o comando a seguir no seu terminal:</p><pre><code>$ npm install generate-changelog -g </code></pre><p>Ao fazer isso, ele será instalado!</p><p><strong>Como usar</strong></p><p>Para fazer com que o pacote funcione, você precisa seguir as diretrizes de uso neste padrão – "tipo(categoria): descrição [flags]". Neste exemplo, usarei o repositório do Angular.js no GitHub.</p><p>Agora, você pode digitar o comando <code>generate</code> no seu terminal dentro do repositório do GitHub.</p><pre><code>$ changelog generate</code></pre><p>Um arquivo "CHANGELOG.md" será criado automaticamente e preenchido com seus <em>logs</em> em formato <em>markdown</em>.</p><p>Veja aqui um exemplo de resultado (com um leitor de <em>markdown</em>, como o GitHub).</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/03/generate-changelog-example.png" class="kg-image" alt="generate-changelog-example" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/03/generate-changelog-example.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/03/generate-changelog-example.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2023/03/generate-changelog-example.png 1196w" width="1196" height="1754" loading="lazy"><figcaption><em>Changelog </em>gerado automaticamente com a ferramenta <em>generate-changelog</em></figcaption></figure><h2 id="conclus-o"><strong>Conclusão</strong></h2><p>Espero que você tenha gostado deste guia e que, agora, entenda como criar um changelog para o seu projeto. Acho uma boa maneira de demonstrar por que devemos escrever boas mensagens de <em>commit</em>.</p><p>Fique à vontade para experimentar outros geradores de <em>changelog</em>!</p><p>Se quiser mais conteúdo deste tipo, <a href="https://twitter.com/gaelgthomas/">siga o autor no Twitter</a>, onde ele escreve sobre desenvolvimento para a web, melhoramento pessoal e sobre sua jornada como desenvolvedor <em>full-stack</em>!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Ficha informativa do Git – 50 comandos do Git que você deveria conhecer ]]>
                </title>
                <description>
                    <![CDATA[ O Git é um sistema de controle de versão distribuído que ajuda desenvolvedores a colaborar em projetos de qualquer dimensão. Linus Torvalds, criador do Linux, criou o Git em 2005 para ajudar no controle do desenvolvimento do núcleo do Linux. O que é o controle de versão distribuído? Um sistema ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/ficha-informativa-do-git-50-comandos-do-git-que-voce-deveria-conhecer/</link>
                <guid isPermaLink="false">6320e5de926c2f06e57cec31</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Erika Freitas ]]>
                </dc:creator>
                <pubDate>Thu, 08 Dec 2022 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/git-cheat-sheet-cover.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/git-cheat-sheet/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Git Cheat Sheet – 50 Git Commands You Should Know</a>
      </p><p>O Git é um sistema de controle de versão distribuído que ajuda desenvolvedores a colaborar em projetos de qualquer dimensão.</p><p>Linus Torvalds, criador do Linux, criou o Git em 2005 para ajudar no controle do desenvolvimento do núcleo do Linux.</p><h2 id="o-que-o-controle-de-vers-o-distribu-do"><strong>O que é o controle de versão distribuído?</strong></h2><p>Um sistema de controle de versão distribuído é um sistema que ajuda você a acompanhar as alterações feitas nos arquivos do seu projeto.</p><p>Esse histórico de alterações fica na sua máquina local e permite reverter para uma versão anterior do seu projeto de maneira fácil caso algo dê errado.</p><p>O Git facilita a colaboração. Todas as pessoas da equipe podem manter uma cópia completa dos repositórios em que estão trabalhando em sua máquina local. Então, graças a um servidor externo, como BitBucket, GitHub ou GitLab, eles podem armazenar o repositório em um único lugar.</p><p>Desse modo, diferentes membros do time podem fazer uma cópia local e todos têm uma visão geral de quaisquer alterações feitas por todos. </p><p>O Git possui diversos comandos que você pode usar. Percebi que esses cinquenta são os que uso com mais frequência (portanto, são os mais úteis de se lembrar).</p><p>Então, eu escrevi este artigo e pensei que seria interessante compartilhá-lo com a comunidade. Espero que você o ache útil – aproveite.</p><h2 id="como-verificar-sua-configura-o-do-git-"><strong>Como verificar sua configuração do Git<strong>:</strong></strong></h2><p>O comando abaixo retorna uma lista de informações sobre sua configuração do Git, incluindo nome de usuário e e-mail:</p><pre><code>git config -l
</code></pre><h2 id="como-configurar-seu-nome-de-usu-rio-do-git-"><strong>Como configurar seu nome de usuário do Git<strong>:</strong></strong></h2><p>Com o comando abaixo você pode configurar seu nome de usuário:</p><pre><code>git config --global user.name "Fabio"
</code></pre><h2 id="como-configurar-seu-e-mail-de-usu-rio-do-git-"><strong>Como configurar seu e-mail de usuário do Git<strong>:</strong></strong></h2><p>Este comando permite configurar o endereço de e-mail utilizado em seus <em>commits</em>:</p><pre><code>git config --global user.email "signups@fabiopacifici.com"
</code></pre><h2 id="como-armazenar-em-cache-suas-credenciais-de-acesso-do-git-"><strong>Como armazenar em cache suas credenciais de acesso do Git<strong>:</strong></strong></h2><p>Você pode armazenar suas credenciais de acesso no cache para não precisar digitá-las sempre. Basta usar este comando:</p><pre><code>git config --global credential.helper cache
</code></pre><h2 id="como-inicializar-um-reposit-rio-git-"><strong>Como inicializar um repositório Git<strong>:</strong></strong></h2><p>Tudo começa aqui. O primeiro passo é inicializar um novo repositório do Git localmente na raiz do seu projeto. Você pode fazer isso com o comando abaixo:</p><pre><code>git init
</code></pre><h2 id="como-adicionar-um-arquivo-rea-de-prepara-o-staging-no-git-"><strong>Como adicionar um arquivo à área de preparação<strong> </strong>(<em>staging</em>) no Git<strong>:</strong></strong></h2><p>O comando abaixo adicionará um arquivo à área de preparação. Basta substituir <code>nome_do_arquivo</code> pelo nome do arquivo que você deseja adicionar à área de preparação.</p><pre><code>git add nome_do_arquivo
</code></pre><h2 id="como-adicionar-todos-os-arquivos-rea-de-prepara-o-no-git-"><strong>Como adicionar todos os arquivos à área de preparação no Git:</strong></h2><p>Se você quiser adicionar todos os arquivos do seu projeto à área de preparação, você pode usar o caractere curinga <code>.</code> e todos os arquivos serão adicionados para você.</p><pre><code>git add .
</code></pre><h2 id="como-adicionar-apenas-arquivos-espec-ficos-rea-de-prepara-o-no-git-"><strong>Como adicionar apenas arquivos específicos à área de preparação no Git:</strong></h2><p>Com o asterisco no comando abaixo, você pode adicionar todos os arquivos que se iniciam com 'arq' à área de preparação.</p><pre><code>git add arq*
</code></pre><h2 id="como-verificar-a-situa-o-de-um-reposit-rio-no-git-"><strong>Como verificar a situação de um repositório no Git:</strong></h2><p>Este comando mostrará a situação do repositório atual, incluindo arquivos na área de preparação, fora da área de preparação e não monitorados.</p><pre><code>git status
</code></pre><h2 id="como-enviar-altera-es-usando-o-editor-no-git-"><strong>Como enviar alterações usando o editor no Git<strong>:</strong></strong></h2><p>Este comando abrirá um editor de texto no terminal, onde você pode escrever uma mensagem de <em>commit </em>completa.</p><p>Uma mensagem de <em>commit </em>é composta por um pequeno resumo das mudanças, uma linha vazia e uma descrição completa das alterações depois dela.</p><pre><code>git commit
</code></pre><h2 id="como-enviar-altera-es-com-uma-mensagem-no-git-"><strong>Como enviar alterações com uma mensagem no Git:</strong></h2><p>Você pode adicionar uma mensagem de <em>commit </em>sem abrir o editor. Este comando permite que você especifique apenas um pequeno resumo para sua mensagem de <em>commit</em>.</p><pre><code>git commit -m "sua mensagem para o commit vai aqui"
</code></pre><h2 id="como-enviar-altera-es-e-pular-a-rea-de-prepara-o-no-git-"><strong>Como enviar alterações (e pular a área de preparação) no Git: </strong></h2><p>Você pode adicionar e submeter arquivos rastreados com um único comando utilizando as opções <code>-a</code> e <code>-m</code>. </p><pre><code>git commit -a -m "sua mensagem para o commit vai aqui"
</code></pre><h2 id="como-ver-seu-hist-rico-de-commits-no-git-"><strong>Como ver seu histórico de <em>commits </em>no Git: </strong></h2><p>Este comando mostra o histórico de commits do repositório atual: </p><pre><code>git log
</code></pre><h2 id="como-ver-seu-hist-rico-de-commits-e-altera-es-no-git-"><strong>Como ver seu histórico de <em>commits </em>e alterações no Git:</strong></h2><p>Este comando mostra o histórico de <em>commits </em>incluindo todos os arquivos e suas alterações:</p><pre><code>git log -p
</code></pre><h2 id="como-ver-um-commit-espec-fico-no-git-"><strong>Como ver um <em>commit </em>específico no Git:</strong></h2><p>Esse comando mostra um commit específico.</p><p>Substitua <em>commit-id</em> pelo id do <em>commit</em> que você encontra no registro depois da palavra <em>commit</em>.</p><pre><code>git show commit-id
</code></pre><h2 id="como-ver-estat-sticas-do-registro-no-git-"><strong>Como ver estatísticas do registro no Git:</strong></h2><p>Este comando fará com que o registro do Git mostre algumas estatísticas das alterações de cada <em>commit</em>, incluindo linha(s) alterada(s) e nomes de arquivo.</p><pre><code>git log --stat
</code></pre><h2 id="como-ver-as-altera-es-feitas-antes-de-envi-las-usando-diff-no-git-"><strong>Como ver as alterações feitas antes de enviá-las usando "diff" no Git:</strong></h2><p>Você pode passar um arquivo como parâmetro para ver apenas as alterações de um arquivo específico. <code>git diff</code>, por padrão, mostra apenas alterações fora da área de preparação.</p><p>Podemos usar "diff" com a opção <code>--staged</code> para ver quaisquer mudanças na área de preparação.</p><pre><code>git diff
git diff all_checks.py
git diff --staged
</code></pre><h2 id="como-ver-as-altera-es-usando-git-add-p-"><strong>Como ver as alterações usando <strong>"git add -p":</strong></strong></h2><p>Este comando abre um prompt e pergunta se você quer colocar as alterações na área de preparação ou não, entre outras opções.</p><pre><code>git add -p
</code></pre><h2 id="como-remover-arquivos-rastreados-da-rvore-de-trabalho-atual-no-git-"><strong>Como remover arquivos rastreados da árvore de trabalho atual no Git:</strong></h2><p>Este comando espera uma mensagem de <em>commit </em>que explique por que o arquivo foi excluído.</p><pre><code>git rm nome_do_arquivo
</code></pre><h2 id="como-renomear-arquivos-no-git-"><strong>Como renomear arquivos no Git:</strong></h2><p>Este comando adiciona a alteração na área de preparação e, em seguida, espera uma mensagem de <em>commit</em>.</p><pre><code>git mv nome_antigo_do_arquivo novo_nome_de_arquivo
</code></pre><h2 id="como-ignorar-arquivos-no-git-"><strong>Como ignorar arquivos no Git:</strong></h2><p>Crie um arquivo <code>.gitignore</code> e faça o <em>commit </em>desse arquivo.</p><h2 id="como-reverter-altera-es-em-arquivos-fora-da-rea-de-prepara-o-do-git-"><strong>Como reverter alterações em arquivos fora da área de preparação do Git:</strong></h2><pre><code>git checkout nome_do_arquivo
</code></pre><h2 id="como-reverter-altera-es-em-arquivos-na-rea-de-prepara-o-do-git-"><strong>Como reverter alterações em arquivos na área de preparação do Git:</strong></h2><p>Você pode utilizar a opção <code>-p</code> para especificar as mudanças que gostaria de redefinir.</p><pre><code>git reset HEAD nome_do_arquivo
git reset HEAD -p
</code></pre><h2 id="como-modificar-o-commit-mais-recente-no-git-"><strong>Como modificar o <em>commit </em>mais recente no Git<strong>:</strong></strong></h2><p><code>git commit --amend</code> permite que você modifique e faça alterações no <em>commit </em>mais recente.</p><pre><code>git commit --amend
</code></pre><p>OBSERVAÇÃO: corrigir um <em>commit </em>local com <code>--amend</code> &nbsp;é ótimo e você pode enviá-lo para um repositório compartilhado após a correção. Você, no entanto, deve evitar alterações em <em>commits </em>que já se tornaram públicos ou que já foram enviados ao repositório remoto. </p><h2 id="como-reverter-o-ltimo-commit-no-git-"><strong>Como reverter o último <em>commit </em>no Git:</strong></h2><p><code>git revert</code> criará um <em>commit </em>que reverterá tudo o que foi feito no <em>commit </em>em questão. &nbsp;Podemos reverter o <em>commit </em>mais recente usando a expressão HEAD, assim:</p><pre><code>git revert HEAD
</code></pre><h2 id="como-reverter-um-commit-antigo-no-git-"><strong>Como reverter um <em>commit </em>antigo no Git:</strong></h2><p>Você pode reverter um <em>commit </em>antigo usando a id desse <em>commit</em>. Isso abre um editor onde você pode adicionar uma mensagem nova de <em>commit</em>.</p><pre><code>git revert comit_id_aqui
</code></pre><h2 id="como-criar-uma-nova-branch-no-git-"><strong>Como criar uma nova <em>branch </em>no Git:</strong></h2><p>Por padrão, você tem uma <em>branch</em>, a <strong><em>main</em></strong>. Com este comando, você pode criar uma nova <em>branch</em>. Após a criação, o Git não muda para ela automaticamente – você deverá fazer isso manualmente com o próximo comando.</p><pre><code>git branch nome_da_branch
</code></pre><h2 id="como-mudar-para-uma-branch-rec-m-criada-no-git-"><strong>Como mudar para uma <em>branch </em>recém-criada no Git:</strong></h2><p>Quando quiser usar uma <em>branch </em>diferente da atual ou a <em>branch </em>recém-criada, você pode usar este comando:</p><pre><code>git checkout nome_da_branch
</code></pre><h2 id="como-listar-as-branches-no-git-"><strong>Como listar as <em>branches </em>no Git<strong>:</strong></strong></h2><p>Você pode visualizar todas as <em>branches </em>criadas usando o comando <code>git branch</code> . Ele mostrará uma lista com todas as <em>branches </em>e marcará a <em>branch </em>atual com um asterisco e em destaque na cor verde.</p><pre><code>git branch
</code></pre><h2 id="como-criar-uma-branch-no-git-e-mudar-para-ela-imediatamente-"><strong>Como criar uma <em>branch </em>no Git e mudar para ela imediatamente<strong>:</strong></strong></h2><p>Em um comando único, você pode criar e mudar para uma nova <em>branch </em>imediatamente. </p><pre><code>git checkout -b nome_da_branch
</code></pre><h2 id="como-excluir-uma-branch-no-git-"><strong>Como excluir uma <em>branch </em>no Git<strong>:</strong></strong></h2><p>Após terminar o trabalho em uma <em>branch </em>e depois de ter feito o merge, você pode excluí-la usando o comando abaixo:</p><pre><code>git branch -d nome_da_branch
</code></pre><h2 id="como-fazer-o-merge-jun-o-de-duas-branches-no-git-"><strong>Como fazer o <em>merge</em> (junção) de duas <em>branches </em>no Git<strong>:</strong></strong></h2><p>Para fazer o <em>merge </em>do histórico da <em>branch </em>atual com o da <em>branch</em> <code>nome_da_branch</code>, você precisará usar o comando abaixo:</p><pre><code>git merge nome_da_branch
</code></pre><h2 id="como-mostrar-o-registro-de-commits-como-um-gr-fico-no-git-"><strong>Como mostrar o registro de <em>commits </em>como um gráfico no Git:</strong></h2><p>Podemos usar <code>--graph</code> para mostrar o registro de <em>commits</em> como um gráfico. Além disso, <code>--oneline</code> serve para limitar as mensagens de <em>commit </em>em uma única linha.</p><pre><code>git log --graph --oneline
</code></pre><h2 id="como-mostrar-o-registro-de-commits-de-todas-as-branches-como-um-gr-fico-no-git-"><strong>Como mostrar o registro de <em>commits</em> de todas as <em>branches </em>como um gráfico no Git:</strong></h2><p>Faz o mesmo que o comando acima, porém para todas as <em>branches</em>.</p><pre><code>git log --graph --oneline --all
</code></pre><h2 id="como-interromper-um-merge-em-conflito-no-git-"><strong>Como interromper um <em>merge </em>em conflito no Git:</strong></h2><p>Se você quiser se desfazer de um <em>merge </em>e começar de novo, você pode executar o seguinte comando:</p><pre><code>git merge --abort
</code></pre><h2 id="como-adicionar-um-reposit-rio-remoto-no-git-"><strong>Como adicionar um repositório remoto no Git:</strong></h2><p>Esse comando adiciona um repositório remoto ao local (basta substituir <code>https://repositorio_aqui</code> pelo URL do repositório remoto).</p><pre><code>git add remote https://repositorio_aqui
</code></pre><h2 id="como-ver-os-urls-remotos-no-git-"><strong>Como ver os <strong>URLs </strong>remotos no<strong> </strong>G<strong>it:</strong></strong></h2><p>Você pode ver todos os repositórios remotos vinculados ao seu repositório local com este comando:</p><pre><code>git remote -v
</code></pre><h2 id="como-obter-mais-informa-es-sobre-um-reposit-rio-remoto-no-git-"><strong>Como obter mais informações sobre um repositório remoto no Git:</strong></h2><p>Basta substituir <code>origin</code> pelo nome do repositório remoto obtido executando o comando <code>git remote -v</code>.</p><pre><code>git remote show origin
</code></pre><h2 id="como-enviar-as-altera-es-para-um-reposit-rio-remoto-no-git-"><strong>Como enviar as alterações para um repositório remoto no Git:</strong></h2><p>Quando todo seu trabalho estiver pronto para ser salvo em um repositório remoto, você pode enviar todas as mudanças usando o comando abaixo:</p><pre><code>git push
</code></pre><h2 id="como-obter-as-mudan-as-de-um-reposit-rio-remoto-no-git-"><strong>Como obter as mudanças de um repositório remoto no Git:</strong></h2><p>Se outros membros da equipe estiverem trabalhando no seu repositório, você pode obter as últimas mudanças feitas no repositório remoto com o comando abaixo:</p><pre><code>git pull
</code></pre><h2 id="como-verificar-branches-remotas-rastreadas-pelo-git-"><strong>Como verificar <em>branches </em>remotas rastreadas pelo Git<strong>:</strong></strong></h2><p>Este comando mostra o nome de todas as <em>branches </em>do repositório local que o Git está rastreando:</p><pre><code>git branch -r

</code></pre><h2 id="como-buscar-as-mudan-as-em-reposit-rios-remotos-no-git-"><strong>Como buscar as mudanças em repositórios remotos no Git:</strong></h2><p>Este comando baixará as mudanças de um repositório mas não realizará o <em>merge </em>com a sua <em>branch </em>local (isso é o que <code>git pull</code> faz). </p><pre><code>git fetch
</code></pre><h2 id="como-verificar-o-registro-de-commits-atual-de-um-reposit-rio-remoto-no-git-"><strong>Como verificar o registro de <em>commits </em>atual de um repositório remoto no Git:</strong></h2><p><em>Commit </em>após <em>commit</em>, o Git cria um registro. Você pode descobrir o registro de um repositório remoto usando este comando:</p><pre><code>git log origin/main
</code></pre><h2 id="como-fazer-o-merge-de-um-reposit-rio-remoto-com-seu-reposit-rio-local-no-git-"><strong>Como fazer o merge de um repositório remoto com seu repositório local no Git: </strong></h2><p>Se o repositório remoto tiver mudanças que você gostaria de mesclar ao repositório local, este comando fará isso para você:</p><pre><code>git merge origin/main
</code></pre><h2 id="como-obter-o-conte-do-das-branches-remotas-no-git-sem-fazer-o-merge-autom-tico-"><strong>Como obter o conteúdo das <em>branches </em>remotas no Git sem fazer o <em>merge </em>automático:</strong></h2><p>Isso permite que você atualize o remoto sem que nenhum conteúdo seja mesclado às <em>branches </em>locais. Você pode usar <code>git merge</code> ou <code>git checkout</code> para fazer o <em>merge</em>.</p><pre><code>git remote update
</code></pre><h2 id="como-enviar-uma-nova-branch-para-um-reposit-rio-remoto-no-git-"><strong>Como enviar uma nova <em>branch </em>para um repositório remoto no Git:</strong></h2><p>Se você quiser enviar uma <em>branch </em>para um repositório remoto, você pode usar o comando abaixo. Basta lembrar de adicionar -u para criar a <em>branch </em>no repositório remoto:</p><pre><code>git push -u origin nome_da_branch

</code></pre><h2 id="como-remover-uma-branch-remota-no-git-"><strong>Como remover uma <em>branch </em>remota no Git:</strong></h2><p>Se você não precisa mais de uma <em>branch </em>remota, você pode removê-la usando o comando abaixo:</p><pre><code>git push --delete origin nome_da_branch_aqui
</code></pre><h2 id="como-utilizar-o-git-rebase-"><strong>Como utilizar o Git <strong>rebase:</strong></strong></h2><p>Você pode transferir o trabalho concluído de uma <em>branch </em>para outra utilizando o &nbsp;<code>git rebase</code>.</p><pre><code>git rebase nome_da_branch_aqui
</code></pre><p>O comando <code>git rebase</code> pode ficar desorientado se você não o fizer corretamente. Antes de usar esse comando, sugiro que você releia <a href="https://git-scm.com/book/it/v2/Git-Branching-Rebasing">aqui</a> a documentação oficial (em inglês).</p><h2 id="como-executar-o-rebase-de-modo-interativo-no-git-"><strong>Como executar o <strong>rebase </strong>de modo interativo no Git:</strong></h2><p>Você pode executar o rebase de modo interativo usando a opção -i.<br>Isso abrirá o editor com um conjunto de comandos que você pode usar.</p><pre><code>git rebase -i master
# p, pick = usa o commit
# r, reword = usa o commit, mas edita a mensagem
# e, edit = usa o commit, mas interrompe para correção
# s, squash = usa o commit, mas funde em commits anteriores
# f, fixup = similar a "squash", mas descarta o registro de mensagem do commit em questão
# x, exec = executa o comando (o resto da linha) usando shell
# d, drop = remove o commit
</code></pre><h2 id="como-for-ar-uma-requisi-o-de-push-no-git-"><strong>Como forçar uma requisição de <em>push </em>no Git:</strong></h2><p>Este comando forçará uma requisição de <em>push</em>. Isso geralmente é bom para <em>branches </em>de <em>pull request</em>, pois ninguém mais deveria tê-las clonado.<br><strong>Isso, porém, não deve ser feito em repositórios públicos.</strong> </p><pre><code>git push -f
</code></pre><h2 id="conclus-o"><strong><strong>Concl</strong>usão</strong></h2><p>Esses comandos podem melhorar drasticamente sua produtividade no Git. Você não precisa se lembrar de todos eles – foi por isso que escrevi esta ficha informativa. Coloque essa página nos seus favoritos para referência futura ou imprima-a, se quiser. </p><p>Obrigado pela leitura! &nbsp;O texto foi escrito por Fabio Pacifici, um desenvolvedor <em>full-stack </em>para a web, professor e profissional certificado em automação com Python. Se você achar esta ficha informativa útil, certamente encontrará algo interessante no canal do autor no YouTube. Você pode se inscrever <a href="https://www.youtube.com/channel/UCTuFYi0pTsR9tOaO4qjV_pQ">aqui</a>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Uma introdução ao Git: O que é, e como usá-lo. ]]>
                </title>
                <description>
                    <![CDATA[ (Tradução realizada em português europeu) O Git é um sistema de controlo de versões, distribuído e de código aberto. Ora, isto são muitas palavras para definir o Git. Vamos decompor esta definição complexa e explicar cada um dos conceitos:  * Sistema de controlo: isto significa que o Git é, ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/uma-introducao-ao-git-o-que-e-e-como-usa-lo/</link>
                <guid isPermaLink="false">6320c673926c2f06e57ceb2c</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Ricardo Costa ]]>
                </dc:creator>
                <pubDate>Wed, 07 Dec 2022 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/0_LU7AdfUTUviVY8DP.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/what-is-git-and-how-to-use-it-c341b049ae61/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">An introduction to Git: what it is, and how to use it</a>
      </p><p><em>(Tradução realizada em português europeu)</em></p><p>O Git é um <strong>sistema de controlo de versões, distribuído e de código aberto</strong>. Ora, isto são muitas palavras para definir o Git.</p><p>Vamos decompor esta definição complexa e explicar cada um dos conceitos:</p><ul><li><strong>Sistema de controlo<strong>:</strong></strong> isto significa que o Git é, basicamente, um <em>tracker </em>de conteúdo. Portanto, o Git pode ser usado para guardar conteúdo – É usado, principalmente, para armazenar código, devido às outras funcionalidades que disponibiliza.</li><li><strong>Sistema de controlo de versões</strong>: O código que é guardado no Git está em constante mutação à medida que novo código é adicionado. Além disso, muitos programadores podem adicionar código em paralelo. O sistema de controlo de versões, ajuda a gerir tudo isto, mantendo um histórico das alterações que foram realizadas. Adicionalmente, o Git disponibiliza funcionalidades como <em>branches</em> e <em>merges</em>, que explicaremos mais tarde.</li><li><strong>Sistema distribuído de controlo de versões </strong>: O Git tem um repositório remoto que está alojado em um servidor e um repositório local que está alojado no computador de cada programador. Isto significa que o código não está apenas guardado num servidor central, mas também existe uma cópia integral em todos os computadores dos programadores. Assim, o Git é um sistema distribuído de controlo de versões porque está presente no computador de cada programador. Explicaremos o conceito de repositórios remotos e locais, posteriormente, neste artigo.</li></ul><h3 id="por-que-precisamos-de-um-sistema-de-controlo-de-vers-es-como-o-git"><strong>Por que precisamos de um Sistema de Controlo de Versões como o Git</strong></h3><p>Os projetos na vida real implicam a colaboração em paralelo de vários programadores. Por isso, é necessário um sistema de controlo de versões, como o Git, para garantir que não existem conflitos entre o código desenvolvido por diferentes pessoas.</p><p>Adicionalmente, os requisitos destes projectos são alterados com muita frequência. Um sistema de controlo de versões permite que os programadores possam reverter alterações e voltar a uma versão anterior do código.</p><p>Finalmente, por vezes, existem projetos que estão a decorrer em paralelo e que partilham o mesmo código base. Nestes casos, o conceito de criação de branches do Git é muito importante.</p><h3 id="agora-vamos-come-ar-a-usar-o-git-"><strong>Agora, vamos começar a usar o Git.</strong></h3><p>Em vez de abordarmos os conceitos todos de uma só vez, vamos explicar cada um deles, através de um exemplo, para um entendimento mais fácil.</p><p><strong><strong>Download </strong>do Git</strong></p><p>Esta ligação tem as instruções para instalação do Git em diversos sistemas operativos:<br><a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" rel="noopener">https://git-scm.com/book/en/v2/Getting-Started-Installing-Git</a></p><p>Verifica que o Git está instalado, usando a seguinte instrução através da linha de comandos:</p><pre><code class="language-bash">git --version</code></pre><h4 id="criar-o-reposit-rio-local-do-git"><strong>Criar o repositório local do Git</strong></h4><p>No teu computador, cria uma pasta para o teu projecto. Vamos dar-lhe o nome &nbsp;<code>simple-git-demo</code>.</p><p>Entra na tua pasta do projecto e adiciona um repositório local do Git através dos seguintes comandos:</p><pre><code class="language-bash">cd simple-git-demo
git init</code></pre><p>O comando<code>git init</code> adiciona um repositório local do Git ao teu projecto.</p><p>Agora, vamos adicionar algum código simples.</p><h4 id="agora-vamos-adicionar-algum-c-digo"><strong>Agora vamos adicionar algum código</strong></h4><p>Cria um ficheiro com o nome <code>demo.txt</code> na pasta de projecto e adiciona-lhe o seguinte texto:</p><pre><code>Initial Content</code></pre><p>Aqui, vamos usar texto simples em vez de código, uma vez que o foco do artigo é o Sistema Git e não uma linguagem de programação específica.</p><h3 id="staging-e-committing-do-c-digo-"><strong><strong><em>Staging</em></strong><em> </em>e <em>c</em><strong><em>ommitting </em></strong>do código.</strong></h3><p><em>Committing</em> é o processo através do qual o código é adicionado ao repositório local. Antes de ser possível realizar o <em>commit </em>do código, ele tem de estar na área de <em>staging. </em>A área de<em> staging </em>existe para registar todas as alterações realizadas aos ficheiros e que serão posteriormente alvo de <em>commit</em>.</p><p>Qualquer ficheiro que não seja adicionado à área de <em>staging</em>, não poderá ser alvo de <em>commit</em>. Isso permite que o programador tenha controlo sobre quais os ficheiros que necessitam de ser alvo de <em>commit</em>.</p><h4 id="staging"><strong><strong>Staging</strong></strong></h4><p>Usa o seguinte commando para realizar o <em>staging </em>do ficheiro:</p><pre><code class="language-bash">git add demo.txt</code></pre><p>Caso pretendas realizar o <em>staging</em> de vários ficheiros, podes usar: </p><p><code>git add file1 file2 file3</code></p><p>Se quiseres adicionar, todos os ficheiros dentro da pasta de projecto, na área de <em>staging</em>, podes usar o seguinte comando:<em> </em></p><pre><code class="language-bash">git add .</code></pre><p>Usa este comando com cuidado, porque ele adiciona, à área de staging, todos os ficheiros e pastas existentes no teu projecto.</p><h4 id="committing"><strong><strong>Committing</strong></strong></h4><p>Para realizar o commit do ficheiro, usa o seguinte comando:</p><pre><code class="language-bash">git commit -m "Initial Commit"</code></pre><p>"<em>Initial Commit</em>" é a mensagem de <em>commit </em>inicial. Deves sempre criar uma mensagem de <em>commit</em> que seja relevante e indicativa das alterações ao código que foram realizadas em cada <em>commit</em>.</p><h3 id="git-status-e-git-log"><strong><strong>Git Status </strong>e <strong>Git Log</strong></strong></h3><p>Agora, vamos modificar o ficheiro <code>demo.txt</code><strong><strong> </strong></strong>e adicionar o seguinte texto:</p><pre><code>Initial Content Adding more Content</code></pre><h4 id="status"><strong><strong>Status</strong></strong></h4><p>Usa o comando <code>git status</code> para descobrires informação sobre que ficheiros foram modificados e quais estão na área de <em>staging – </em>é também apresentada informação adicional, que pode ser ignorada para já.</p><p>Usa o seguinte comando para veres o status:</p><pre><code class="language-bash">git status</code></pre><p>O status mostra que o ficheiro <code>demo.txt</code> foi modificado e ainda não está na área de <em>staging</em>.</p><p>Agora, vamos adicionar o ficheiro <code>demo.txt</code> para a área de <em>staging</em> e fazer o <em>commit</em> usando os seguintes comandos:</p><pre><code class="language-bash">git add demo.txt git commit -m "demo.txt file is modified"</code></pre><h3 id="log"><strong><strong>Log</strong></strong></h3><p>Usa o comando<code>git log</code> para obteres uma impressão de todos os <em>commits </em>realizados até ao momento.</p><p>O comando usado é: <code>git log</code></p><p>O log mostra quem foi o autor, a data e a mensagem de cada <em>commit</em></p><h3 id="branches"><strong><strong>Branches</strong></strong></h3><p>Até agora, não criamos <em>branches </em>no Git. Por definição, o Git realiza os <em>commits </em>na branch <strong>master</strong>.</p><h4 id="o-que-uma-branch"><strong>O que é uma <em>branch</em></strong></h4><p>Uma branch não é mais do que um ponteiro para o último commit no repositório Git. Portanto, actualmente, a nossa master branch é um ponteiro para o segundo commit &nbsp;<code>“demo.txt file is modified”</code>.</p><h4 id="por-que-s-o-necess-rias-v-rias-branches"><strong>Por que são necessárias várias branches?</strong></h4><p>As branches são necessárias para suportar vários desenvolvimentos em paralelo. No diagrama apresentado de seguida, temos uma representação do funcionamento das branches.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/sww3mboJ61C4kpLWlQYHnHWvrjX8p--VMui2.jpg" class="kg-image" alt="sww3mboJ61C4kpLWlQYHnHWvrjX8p--VMui2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/11/sww3mboJ61C4kpLWlQYHnHWvrjX8p--VMui2.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/11/sww3mboJ61C4kpLWlQYHnHWvrjX8p--VMui2.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="800" loading="lazy"></figure><p>Inicialmente, o <em>commit </em>1 e o <em>commit </em>2 são realizados na branch master. Depois do commit 2, é criada uma branch com o nome "Test". O commit 3 e o commit 4 são adicionados à branch Test.</p><p>Ao mesmo tempo, outros <em>commits</em>, &nbsp;<em>commit </em>3 e <em>commit </em>4 são adicionados à branch master. Aqui, conseguimos ver que, após o commit 2, estão a ser realizados dois desenvolvimentos em paralelo, em duas branches separadas.</p><p>A branch Test e a branch Master divergiram neste ponto e têm códigos diferentes – o código da branch Test pode ser mesclado (do inglês, <em>merged</em>) com a branch Master usando o comando <code>git merge</code>. Posteriormente, falaremos desse processo.</p><h4 id="criar-uma-branch-no-reposit-rio-local-"><strong>Criar uma branch no repositório local.</strong></h4><p>Cria uma branch chamada <strong><strong>test</strong></strong> usando o seguinte comando:</p><pre><code class="language-bash">git branch test</code></pre><p>Este comando cria a branch <code>test</code>.</p><p>Ainda estamos no contexto da branch master. Para mudarmos para a branch <code>test</code>, usamos o seguinte comando:</p><pre><code class="language-bash">git checkout test</code></pre><p>Agora estamos na branch <code>test</code>.</p><p>Podes obter uma lista de todas as branches existentes no repositório local usando o seguinte comando:</p><pre><code class="language-bash">git branch</code></pre><h4 id="executa-alguns-commits-na-nova-branch"><strong>Executa alguns commits na nova branch</strong></h4><p>Modifica <code>demo.txt</code> adicionando o seguinte código:</p><pre><code>Initial Content Adding more Content Adding some Content from test Branch</code></pre><p>Agora executa o <em>stage </em>e o <em>commit </em>com os seguintes comandos:</p><pre><code class="language-bash">git add demo.txt git commit -m "Test Branch Commit"</code></pre><p>Este commit foi realizado na branch Test. Agora, a branch Test está avançada em relação à branch Master em 1 commit &nbsp;— porque a branch Test também possui 2 commits da branch master.</p><p>Podes verificar o histórico de commits da branch Test com o comando:</p><pre><code class="language-bash">git log</code></pre><h3 id="merging"><strong><strong>Merging</strong></strong></h3><p>Neste momento, a branch Test está avançada em 1 commit em relação à branch Master. Vamos supor que agora precisamos que todo o código da branch Test seja colocado na branch Master. Esta é a situação em que o comando <code>git merge</code> é muito útil.</p><p>Para conseguirmos fazer o <em>merge</em> do código da branch test na branch master, basta seguir os seguintes passos:</p><p>Primeiro, voltar à branch master:</p><pre><code class="language-bash">git checkout master</code></pre><p>Depois, executar o comando <code>merge</code>:</p><pre><code class="language-bash">git merge test</code></pre><p>Depois de executar esses 2 comandos, o <em>merge </em>deverá estar concluído com sucesso. Neste exemplo, não existem conflitos.</p><p>Em projectos reais, contudo, é possível que existam conflitos quando se executa um <em>merge</em>. Para resolver estes conflitos, é necessária alguma experiência, algo que adquirirás à medida que a tua familiarização e que o tempo de trabalho com o Git aumente.</p><p>Agora, corre o comando <code>git log</code><strong><strong> </strong></strong>e vais reparar que a branch master também possui 3 commits.</p><h3 id="o-reposit-rio-remoto-do-git"><strong>O repositório remoto do Git</strong></h3><p>Até agora, temos estado a trabalhar apenas no repositório local. Cada programador trabalhará no seu repositório local, mas, eventualmente, terão a necessidade de fazer <em>push </em>do seu código para o repositório remoto. Assim que o código estiver no repositório remoto, outros programadores serão capazes de ver e modificar esse código.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/O-6UdGYVsEjM-oJmtJ5KQpQnXIBOCZoB22X1.jpg" class="kg-image" alt="O-6UdGYVsEjM-oJmtJ5KQpQnXIBOCZoB22X1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/11/O-6UdGYVsEjM-oJmtJ5KQpQnXIBOCZoB22X1.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/11/O-6UdGYVsEjM-oJmtJ5KQpQnXIBOCZoB22X1.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="265" loading="lazy"><figcaption>Representação de repositório remoto e repositórios locais</figcaption></figure><h4 id="github"><strong><strong>GitHub</strong></strong></h4><p>Aqui, vamos passar a usar o GitHub para o repositório remoto.</p><p>Navega para o link: <a href="https://github.com/" rel="noopener">https://github.com/</a> e cria uma conta.</p><p>Depois do registo na homepage do GitHub, clica em <strong><strong>Start a Project</strong> </strong>para criares um repositório Git. Dá um nome ao repositório e clica em "Create Repository"</p><p>Dá um nome como <code>git-blog-demo</code>.</p><p>Isto vai criar um repositório remoto no Github e, quando abrires o repositório, será aberta uma página idêntica à apresentada abaixo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/LWpWCg5LTo7m-IkZW1io-194VWZ61di5CIGY.png" class="kg-image" alt="LWpWCg5LTo7m-IkZW1io-194VWZ61di5CIGY" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/11/LWpWCg5LTo7m-IkZW1io-194VWZ61di5CIGY.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/11/LWpWCg5LTo7m-IkZW1io-194VWZ61di5CIGY.png 800w" sizes="(min-width: 720px) 720px" width="800" height="189" loading="lazy"></figure><p>O URL do repositório é o texto destacado em cima.</p><p> <code><strong><strong>https://github.com/aditya-sridhar/git-blog-demo.git</strong></strong></code></p><p>Para apontares o teu repositório local para o repositório remoto, usa este comando:</p><pre><code class="language-bash">git remote add origin [url do repositório]</code></pre><h4 id="git-push"><strong><strong><strong><strong>Git Push</strong></strong></strong></strong></h4><p>Para fazermos <em>push </em>de todo o código do repositório local para o repositório remoto, usamos o seguinte comando:</p><pre><code class="language-bash">git push -u origin master</code></pre><p>Este comando realiza o <em>push </em>(actualização) do código da branch master no repositório local para a branch master do repositório remoto.</p><h3 id="comandos-adicionais"><strong>Comandos adicionais</strong></h3><h4 id="git-pull"><strong><strong>Git Pull</strong></strong></h4><p><code>git pull</code> é usado para fazer <em>pull </em>das últimas alterações no repositório remoto para o teu repositório local. O código do repositório remoto é constantemente atualizado por vários programadores. Isso justifica a necessidade do comando <code>git pull </code>:</p><pre><code class="language-bash">git pull origin master</code></pre><h4 id="git-clone"><strong><strong>Git Clone</strong></strong></h4><p><code>git clone</code> é usado para clonar um repositório remoto, já existente, para o teu computador. O comando a usar é:</p><pre><code class="language-bash">git clone [repository url]</code></pre><h3 id="parab-ns"><strong>Parabéns</strong></h3><p>Agora que conheces os conceitos básicos necessários para usar o Git, aventura-te e explora mais!</p><p>Em breve, publicarei um novo artigo sobre conceitos um pouco mais avançados do Git. Mantém-te atento!</p><h3 id="sobre-o-autor"><strong>Sobre o autor</strong></h3><p>O autor adora tecnologia e segue atentamente todos os avanços. Ele também gosta de ajudar os outros com o seu conhecimento na área tecnológica.</p><p>Conecte-se ao autor em sua <a href="https://www.linkedin.com/in/aditya1811/">conta do LinkedIn</a></p><p>Também é possível seguir o autor no <a href="https://twitter.com/adityasridhar18">Twitter</a> </p><p><a href="https://adityasridhar.com/">Site do autor</a> </p><h3 id="outras-publica-es-do-autor-em-ingl-s-"><strong>Outras publicações do autor (em inglês)</strong></h3><p><a href="https://www.freecodecamp.org/news/how-to-use-git-efficiently-54320a236369/">How to use Git efficiently</a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Tutorial de Git e GitHub – controle de versão para iniciantes ]]>
                </title>
                <description>
                    <![CDATA[ Git e GitHub são duas tecnologias que todo desenvolvedor deve aprender, independentemente de sua área. Se você é um desenvolvedor iniciante, pode pensar que esses dois termos significam a mesma coisa, mas são diferentes. Este tutorial ajudará você a entender o que é Git e controle de versão, os comandos ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/tutorial-de-git-e-github-controle-de-versao-para-iniciantes/</link>
                <guid isPermaLink="false">6318e4ab281b1606c8fcd31e</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paula Flávia Pagotto Simionato ]]>
                </dc:creator>
                <pubDate>Wed, 28 Sep 2022 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/g1117.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/git-and-github-for-beginners/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Git and GitHub Tutorial – Version Control for Beginners</a>
      </p><p>Git e GitHub são duas tecnologias que todo desenvolvedor deve aprender, independentemente de sua área.</p><p>Se você é um desenvolvedor iniciante, pode pensar que esses dois termos significam a mesma coisa, mas são diferentes.</p><p>Este tutorial ajudará você a entender o que é Git e controle de versão, os comandos básicos do Git que você precisa conhecer, como você pode usar seus recursos para aumentar a eficiência do seu trabalho e como estender esses recursos usando o GitHub.</p><p>Este guia é voltado a iniciantes, pois os exemplos serão muito fáceis de entender. Também será um tutorial generalizado para que qualquer pessoa possa acompanhar, não importa qual seja sua linguagem de programação favorita.</p><p>Para nosso projeto, faremos uma lista de tarefas escrita em um arquivo de texto (txt). Você verá como podemos usar os recursos do Git para trabalhar e criar uma versão final da lista.</p><h3 id="pr-requisitos"><strong><strong>Pr</strong>é-<strong>requisit</strong>o<strong>s</strong></strong></h3><p>Para concluir este tutorial, você precisará do seguinte:</p><ul><li>Uma interface de linha de comando, um terminal.</li><li>Um editor de texto de sua escolha (usarei o VS Code). </li><li>Uma conta no GitHub. </li></ul><h2 id="o-que-git"><strong>O que é <strong>Git?</strong></strong></h2><p>O Git é um sistema de controle de versão que permite rastrear as alterações feitas em seus arquivos ao longo do tempo. Com o Git, você pode reverter para vários estados de seus arquivos (como se usasse uma máquina do tempo). Você também pode fazer uma cópia do arquivo, fazer alterações nessa cópia e mesclar essas alterações na versão original.</p><p>Por exemplo, você pode estar trabalhando na página de destino de um site e descobrir que não gosta da barra de navegação. Ao mesmo tempo, você pode ficar apreensivo em começar a alterar seus componentes, porque o resultado pode ser pior.</p><p>Com o Git, você pode criar uma cópia idêntica desse arquivo e mexer na barra de navegação. Então, quando estiver satisfeito com suas alterações, poderá mesclar a cópia ao arquivo original.</p><p>Você não está limitado a usar o Git apenas para arquivos de código-fonte – você também pode usá-lo para acompanhar arquivos de texto ou até imagens. Isso significa que o Git não é apenas para desenvolvedores – qualquer um pode achá-lo útil.</p><h3 id="como-instalar-o-git"><strong>Como instalar o<strong> Git</strong></strong></h3><p>Para usar o Git, você precisa instalá-lo em seu computador. Para fazer isso, você pode baixar a versão mais recente no <a href="https://git-scm.com/downloads">site da web oficial</a>. Você pode fazer o download para o seu sistema operacional a partir das opções fornecidas.</p><p>Você também pode instalar o Git usando a linha de comando, mas, como os comandos variam de acordo com cada sistema operacional, vamos nos concentrar na abordagem mais geral.</p><h3 id="como-configurar-o-git"><strong>Como<strong> configur</strong>ar<strong> </strong>o <strong>Git</strong></strong></h3><p>Vou assumir que, neste ponto, você já instalou o Git. Para verificar isso, você pode executar este comando no terminal: <code>git --version</code>. Ele mostra a versão atual instalada no seu PC.</p><p>A próxima coisa que você precisa fazer é definir seu nome de usuário e endereço de e-mail. O Git usará essas informações para identificar quem fez alterações específicas nos arquivos.</p><p>Para definir seu nome de usuário, digite e execute estes comandos: <code>git config --global user.name "SEU_NOME_DE_USUARIO"</code> e <code>git config --global user.email "SEU_E-MAIL"</code>. Apenas certifique-se de substituir <code>"SEU_NOME_DE_USUARIO"</code> e <code>"SEU_E-MAIL"</code> pelos valores que você escolher — ou seja, seu nome de usuário e seu e-mail reais. </p><h2 id="como-criar-e-inicializar-um-projeto-no-git">Como criar e inicializar um projeto no <strong><strong>Git</strong></strong></h2><p>Após terminarmos de instalar e configurar o Git, agora é hora de criar nosso projeto.</p><p>Eu criei uma pasta, no meu desktop, chamada <code>Git and GitHub tutorial</code>. Usando a linha de comando, navegue até o local do seu novo projeto. Para mim, eu executaria os seguintes comandos:</p><p><code>cd desktop</code></p><p><code>cd Git and GitHub tutorial</code></p><p>Se você conhece a linha de comando há pouco e ainda está aprendendo a usá-la para navegar pelo seu PC, sugiro usar o Visual Studio Code da Microsoft. É um editor de código que possui um terminal embutido para executar comandos. Você pode baixá-lo <a href="https://code.visualstudio.com/download">aqui</a>.</p><p>Depois de instalar o VS Code, abra seu projeto no editor e abra um novo terminal para seu projeto. Isso apontará automaticamente o terminal/linha de comando para o caminho do seu projeto.</p><p>Agora, para inicializar um repositório do seu projeto, basta executar <code>git init</code>. Isso dirá ao Git para começar a observar seus arquivos a cada alteração que ocorrer. Esta é a aparência na linha de comando/terminal:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--95-.png" class="kg-image" alt="Screenshot--95-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/09/Screenshot--95-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--95-.png 682w" width="682" height="84" loading="lazy"><figcaption>git init</figcaption></figure><p>A primeira linha tem informações sobre meu PC e o caminho para a pasta. A segunda linha é o comando <code>git init</code> e a terceira linha é a resposta enviada de volta me dizendo que meu repositório (ou <em>repo</em>) foi inicializado. Ele é considerado vazio porque não informamos ao Git quais arquivos rastrear.</p><p>Um repositório é apenas outra maneira de definir um projeto que está sendo monitorado/rastreado pelo Git.</p><h3 id="arquivos-de-projeto-no-git">Arquivos de projeto no Git</h3><p>Eu criei apenas um arquivo chamado <code>todo.txt</code>. Essa é a aparência do arquivo:</p><pre><code class="language-txt">MINHA LISTA DE TAREFAS

1. Escrever um artigo.
2. Programar.
3. Estudar pelos livros.
4. Chegar nas aulas a tempo.
5. Visitar minha tia.
6. Me candidatar a trabalhos remotos. </code></pre><p>Antes de continuarmos aprendendo outros comandos do Git, vamos falar sobre o GitHub.</p><h2 id="o-que-o-github"><strong>O que é<strong> </strong>o <strong>GitHub?</strong></strong></h2><p>O GitHub é um serviço de hospedagem on-line para repositórios do Git. Imagine trabalhar em um projeto em casa e, enquanto estiver fora – talvez na casa de um amigo, de repente – se dar conta da solução para um erro de código que o deixou inquieto por dias.</p><p>Você não pode fazer essas alterações porque seu PC não está com você. Se, contudo, você tiver seu projeto hospedado no GitHub, poderá acessar e baixar esse projeto com um comando em qualquer computador ao qual tenha acesso. Em seguida, você pode fazer suas alterações e enviar a versão mais recente de volta ao GitHub.</p><p>Em resumo, o GitHub permite que você armazene seu repositório em sua plataforma. Outro recurso incrível que vem com o GitHub é a capacidade de colaborar com outros desenvolvedores de qualquer local.</p><p>Agora que criamos e inicializamos nosso projeto localmente, vamos enviá-lo para o GitHub.</p><p>Se você é iniciante, encontrará alguns termos novos como <em>push</em>, <em>commit</em>, <em>add </em>e assim por diante – mas não se deixe assustar com eles. Com alguma prática, você será capaz de lembrar desses termos e do que eles fazem.</p><h2 id="como-enviar-um-reposit-rio-para-o-github">Como enviar um repositório para o GitHub</h2><p>Vou dividir esta seção em etapas para ajudá-lo a entender o processo com mais clareza.</p><h3 id="passo-1-crie-uma-conta-no-github"><strong>Passo<strong> 1 – Cr</strong>i<strong>e </strong>um<strong>a</strong> conta no<strong> GitHub</strong></strong></h3><p>Para poder usar o GitHub, terá de criar uma conta primeiramente. Você pode fazer isso no <a href="https://github.com/">site da web</a> do GitHub.</p><h3 id="passo-2-crie-um-reposit-rio"><strong>Passo<strong> 2 – Cr</strong>i<strong>e </strong>um<strong> repositó</strong>rio</strong></h3><p>Você pode clicar no símbolo <code>+</code> no canto superior direito da página e escolher "<em>New repository</em>" (Novo repositório). Dê um nome ao seu repositório, role para baixo e clique no botão "<em>Create repository</em>" (Criar repositório).</p><h3 id="passo-3-adicionar-e-confirmar-arquivos"><strong>Passo <strong>3 – </strong></strong>Adicionar e confirmar arquivos</h3><p>Antes de "adicionar" e "confirmar" nossos arquivos, você precisa entender os estágios de um arquivo que está sendo rastreado pelo Git.</p><h4 id="estado-confirmado-committed-"><strong>Estado confirmado (committed)</strong></h4><p>Um arquivo está no estado <strong>confirmado </strong>quando todas as alterações feitas no arquivo foram salvas no repositório local. Os arquivos no estágio confirmado são arquivos prontos para serem enviados para o repositório remoto (no GitHub).</p><h4 id="estado-modificado-modified-"><strong>Estado m<strong>odifi</strong>cado (modified)</strong></h4><p>Um arquivo no estado <strong>modificado</strong> tem algumas alterações feitas nele, mas ainda não foi salvo. Isso significa que o estado do arquivo foi alterado de seu estado anterior no estado confirmado.</p><h4 id="estado-preparado-staged-"><strong>Estado preparado (staged)</strong></h4><p>Um arquivo no estado <strong>preparado </strong>significa que está pronto para ser confirmado. Nesse estado, todas as alterações necessárias foram feitas. Portanto, o próximo passo é mover o arquivo para o estado de confirmação.</p><p>Você pode entender isso melhor imaginando o Git como uma câmera. A câmera só tirará um instantâneo quando o arquivo atingir o estado de confirmação. Após este estado, a câmera começa a comparar as alterações feitas no mesmo arquivo com o último instantâneo (este é o estado modificado). Quando as alterações necessárias forem feitas, o arquivo é preparado e movido para o estado de confirmação para um novo instantâneo.</p><p>Isso pode ser muita informação para absorver no momento, mas não desanime – fica mais fácil com a prática.</p><h3 id="como-adicionar-arquivos-ao-git"><strong>Como adicionar arquivos ao<strong> Git</strong></strong></h3><p>Quando inicializamos nosso projeto, o arquivo não estava sendo rastreado pelo Git. Para isso, usamos o comando <code>git add .</code> O ponto que vem depois de <code>add</code> representa todos os arquivos que existem no repositório. Se você quiser adicionar um arquivo específico (por exemplo, um arquivo chamado <code>about.txt</code>), use <code>git add about.txt</code>.</p><p>Agora, nosso arquivo está no estado preparado. Você não receberá uma resposta após este comando, mas, para saber em que estado seu arquivo está, você pode executar o comando <code>git status</code>. </p><h3 id="como-confirmar-commit-arquivos-no-git"><strong>Como confirmar (<strong>commit</strong>) arquivos no<strong> Git</strong></strong></h3><p>O próximo estado de um arquivo após o estado preparado é o estado confirmado. Para confirmar nosso arquivo, usamos o comando <code>git commit -m "first commit"</code> </p><p>A primeira parte do comando <code>git commit</code> diz ao Git que todos os arquivos preparados estão prontos para serem confirmados. Então, é hora de tirar um instantâneo. A segunda parte, <code>-m "first commit"</code>, é a mensagem de confirmação. <code>-m</code> é uma abreviação de mensagem enquanto o texto entre aspas é a mensagem de confirmação (que pode ser a mensagem que você quiser e no idioma que quiser).</p><p>Depois de executar este comando, você deve obter uma resposta semelhante a esta:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--97-.png" class="kg-image" alt="Screenshot--97-" width="586" height="107" loading="lazy"><figcaption>git commit</figcaption></figure><p>Agora, nosso arquivo está no estado confirmado.</p><h3 id="passo-4-envie-o-reposit-rio-para-o-github"><strong>Passo<strong> 4 – </strong></strong>Envie o repositório para o<strong><strong> GitHub</strong></strong></h3><p>Depois de criar o repositório, você deve ser redirecionado para uma página que informa como criar um repositório localmente ou enviar um já existente.</p><p>No nosso caso, o projeto já existe localmente, então usaremos comandos na seção "… ou enviar um repositório existente a partir da linha de comando". Estes são os comandos:</p><pre><code>git remote add origin https://github.com/ihechikara/git-and-github-tutorial.git
git branch -M main
git push -u origin main</code></pre><p>O primeiro comando, <code>git remote add origin <a href="https://github.com/ihechikara/git-and-github-tutorial.git">https://github.com/ihechikara/git-and-github-tutorial.git</a></code>, cria uma conexão entre seu repositório local e o repositório remoto no GitHub.</p><p>O URL do seu projeto remoto deve ser totalmente diferente do anterior. Portanto, para acompanhar, certifique-se de seguir as etapas e trabalhar com seu próprio repositório remoto. Normalmente, você não receberá uma resposta após executar este comando, mas certifique-se de ter uma conexão com a internet.</p><p>O segundo comando, <code>git branch -M main</code>, altera o nome do seu branch principal para "main". O branch padrão pode ser criada como "master", mas "main" é o nome padrão para este repositório agora. Geralmente, não há resposta aqui.</p><p>O último comando, <code>git push -u origin main</code>, envia seu repositório do seu dispositivo local para o GitHub. Você deve obter uma resposta semelhante a esta:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--102-.png" class="kg-image" alt="Screenshot--102-" width="551" height="195" loading="lazy"><figcaption>git push</figcaption></figure><p>Para ajudá-lo a aprofundar sua compreensão dos estágios do arquivo, farei alterações no arquivo e, em seguida, enviarei a nova versão para o GitHub.</p><p>Lembre-se de que nosso arquivo agora está no estado confirmado. Vamos fazer alterações no arquivo e anotar os estados.</p><p>Vou adicionar uma nova tarefa à lista de tarefas:</p><pre><code>MINHA LISTA DE TAREFAS

1. Escrever um artigo.
2. Programar.
3. Estudar pelos livros.
4. Chegar nas aulas a tempo.
5. Visitar minha tia.
6. Me candidatar a trabalhos remotos. 
7. Praticar programação</code></pre><p>Depois de adicionar a nova tarefa, execute o comando <code>git status</code>. Isto é o que você deverá ver:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--98-.png" class="kg-image" alt="Screenshot--98-" width="551" height="217" loading="lazy"><figcaption>git status</figcaption></figure><p>Depois de fazer alterações no arquivo, ele foi movido para o estado modificado, mas ainda não está preparado para confirmação. Então, você ainda não pode enviá-lo para o GitHub. O Git não tirou um instantâneo final desse estado atual, pois está apenas comparando as alterações que fizemos agora com o último instantâneo.</p><p>Agora vamos adicionar (preparar) este arquivo e, em seguida, confirmá-lo e enviá-lo. Isto é igual ao que fizemos na última seção.</p><p>Primeiro, adicionamos o arquivo usando <code>git add .</code>, que adiciona todos os arquivos na pasta (um único arquivo, no nosso caso). Em seguida, confirmamos o arquivo executando <code>git commit -m "added new task"</code> (a mensagem significa "nova tarefa adicionada") seguido de <code>git push -u origin main</code>.</p><p>Essas são as três etapas para enviar seus arquivos modificados para o GitHub. Você adiciona, confirma e, em seguida, envia. Espero que agora você entenda os estágios do arquivo e os comandos associados a eles.</p><h2 id="como-usar-branches-no-git">Como usar branches no <strong><strong>Git</strong></strong></h2><p>Com branches, você pode criar uma cópia de um arquivo no qual gostaria de trabalhar sem estragar a cópia original. Você pode mesclar essas alterações com a cópia original ou apenas deixar o branch permanecer independente.</p><p>Antes de começarmos a usar branches, quero mostrar uma representação visual do nosso repositório, que se parece com isso:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/g638.png" class="kg-image" alt="g638" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/09/g638.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/09/g638.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2022/09/g638.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/09/g638.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1016" loading="lazy"><figcaption>branch main</figcaption></figure><p>A imagem acima mostra nosso branch principal com os dois últimos commits (o primeiro commit e o commit da nova tarefa adicionada).</p><p>Neste ponto, quero adicionar mais tarefas à lista, mas ainda não tenho certeza se as quero na minha lista principal. Então, vou criar um outro branch chamado &nbsp;<code>test</code> para ver como ficaria minha lista com mais tarefas incluídas.</p><p>Para criar um outro branch, execute este comando: <code>git checkout -b test</code>. Vamos dividir isso em partes e explicar.</p><p><code>checkout</code> diz ao Git que deve mudar para um outro branch. <code>-b</code> diz ao Git para criar esse outro branch. <code>test</code> é o nome do branch a ser criado e alterado. Aqui está a resposta que você deve obter:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--99-.png" class="kg-image" alt="Screenshot--99-" width="547" height="74" loading="lazy"><figcaption>git checkout -b</figcaption></figure><p>Agora que criamos um outro branch, é assim que nosso repositório ficará:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/g664.png" class="kg-image" alt="g664" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/09/g664.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/09/g664.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2022/09/g664.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/09/g664.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1014" loading="lazy"><figcaption>git branch</figcaption></figure><p>Criamos o outro branch a partir do estado do nosso último commit. Vamos agora adicionar mais tarefas a esse novo branch.</p><pre><code>MINHA LISTA DE TAREFAS

1. Escrever um artigo.
2. Programar.
3. Estudar pelos livros.
4. Chegar nas aulas a tempo.
5. Visitar minha tia.
6. Me candidatar a trabalhos remotos. 
7. Praticar programação
8. Completar a tarefa de estágio.
9. Praticar aberturas do xadrez.
10. Resolver quebra-cabeças do xadrez.
11. Verificar o cronograma dos testes. </code></pre><p>Eu adicionei quatro novas tarefas. Para mesclar o novo estado com o branch <code>main</code>, você deve primeiro preparar e confirmar esse branch. Não entrarei em detalhes sobre o assunto, pois fizemos isso duas vezes na última seção.</p><p>Você deve tentar fazer isso sozinho para entender como funciona. Como dica, adicione o arquivo e, em seguida, confirme com uma mensagem (consulte a seção anterior para obter detalhes de como fazer isso).</p><p>Depois de confirmar seu branch <code>test</code>, volte para o branch <code>main</code> executando este comando: <code>git checkout main</code>.</p><p>Você notou que não adicionamos o <code>-b</code> ? Isso ocorre porque não estamos criando um outro branch, mas mudando para um branch existente. Você pode verificar todos os branches que existem em seu repositório executando o comando <code>git branch</code> </p><p>Agora, podemos mesclar as alterações que fizemos no branch <code>test</code> no branch <code>main</code> executando <code>git merge test</code>. Neste ponto, você verá todas as alterações feitas no branch <code>test</code> refletidas no branch <code>main</code>. Você também deve receber uma resposta semelhante a esta:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--100-.png" class="kg-image" alt="Screenshot--100-" width="548" height="122" loading="lazy"><figcaption>git merge</figcaption></figure><p>Aqui está uma representação visual do nosso repositório:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/g816.png" class="kg-image" alt="g816" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/09/g816.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/09/g816.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2022/09/g816.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/09/g816.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1014" loading="lazy"><figcaption>git merge</figcaption></figure><p>Se você continuar a enviar seu repositório para o GitHub, verá que o branch <code>test</code> não será enviado. Ele permanecerá apenas em seu repositório local. Se você quiser enviar seu branch <code>test</code>, mude para ele usando <code>git checkout test</code> e execute o comando <code>git push -u origin test</code>.</p><h2 id="como-extrair-um-reposit-rio-no-git">Como extrair um repositório no Git</h2><p>Fazer <em>pull </em>no Git significa clonar o estado atual de um repositório remoto em seu computador/repositório. Isso é útil quando você deseja trabalhar em seu repositório de um computador diferente ou quando está contribuindo para um projeto de código aberto on-line.</p><p>Para testar isso, não se preocupe em mudar para um novo computador. Basta executar <code>cd ..</code> para sair do diretório atual e voltar uma etapa. No meu caso, naveguei de volta para a minha área de trabalho.</p><p>Vá para o GitHub e, na página principal do seu repositório, você verá um botão verde que diz "Code". Ao clicar no botão, você deverá ver algumas opções em um menu suspenso. Vá em frente e copie o URL no formato HTTPS.</p><p>Depois disso, execute <code>git clone SEU_URL_DE_HTTPS</code>. Este comando puxa o repositório remoto para seu computador local em uma pasta chamada git-and-git-tutorial. Isto é o que você deverá ver em seu terminal:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot--101-.png" class="kg-image" alt="Screenshot--101-" width="538" height="165" loading="lazy"><figcaption>git clone</figcaption></figure><h2 id="conclus-o"><strong><strong>Conclusã</strong>o</strong></h2><p>Este artigo abordou os comandos básicos que ajudarão você a começar a usar o Git. Também começamos a aprender a usar o GitHub.</p><p>Se você seguiu até este ponto, parabéns. Você está pronto para seguir em frente. Agora, você pode usar o Git em seus projetos, independentemente da linguagem de programação que estiver usando.</p><p>Você deve saber que esses não são todos os comandos que existem no Git – portanto, sinta-se à vontade para fazer mais pesquisas para aprender mais comandos e seus usos. <a href="https://www.freecodecamp.org/news/what-is-git-learn-git-version-control/">Este artigo</a> e <a href="https://www.freecodecamp.org/news/git-cheat-sheet/">esta página de dicas</a> (ambos em inglês) são boas fontes para se começar . <a href="https://gist.github.com/brandon1024/14b5f9fcfd982658d01811ee3045ff1e">Este</a> é um ótimo lugar para ver uma lista detalhada de mais comandos do Git (em inglês).</p><p>Encontre o autor no <a href="https://twitter.com/Ihechikara2">Twitter</a>. Feliz programação!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Git Reset para Remote Head – como redefinir uma branch remota para a origem ]]>
                </title>
                <description>
                    <![CDATA[ A ramificação é um conceito central no Git. Ela pode ajudá-lo a configurar um fluxo de trabalho distribuído para colaboração em equipe e tornar seu processo de desenvolvimento mais eficiente. Quando você está usando o controle de versão e distribuindo recursos entre branches, há muita comunicação entre seu computador local ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/git-reset-para-remote-head-como-redefinir-uma-branch-remota-para-a-origem/</link>
                <guid isPermaLink="false">62ffef26714c9406b66270cf</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Paula Flávia Pagotto Simionato ]]>
                </dc:creator>
                <pubDate>Wed, 14 Sep 2022 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/article-banner--1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/git-reset-to-remote-head-how-to-reset-a-remote-branch-to-origin/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Git Reset to Remote Head – How to Reset a Remote Branch to Origin</a>
      </p><p>A ramificação é um conceito central no Git. Ela pode ajudá-lo a configurar um fluxo de trabalho distribuído para colaboração em equipe e tornar seu processo de desenvolvimento mais eficiente.</p><p>Quando você está usando o controle de versão e distribuindo recursos entre branches, há muita comunicação entre seu computador local e seu repositório on-line no GitHub. Durante esse processo, talvez seja necessário redefinir a cópia original do projeto.</p><p>Se redefinir uma ramificação (em inglês, <em>branch</em>) assusta você, não se preocupe – este artigo apresentará <em>branches</em> remotas, <em>remote head</em> e como você pode redefinir facilmente uma <em>branch</em> remota para <em>remote head</em>.</p><h2 id="pr-requisitos"><strong><strong><strong><strong>Pr</strong></strong></strong>é-<strong><strong><strong>requisit</strong></strong></strong>o<strong><strong><strong>s</strong></strong></strong></strong></h2><ul><li>Conhecimento básico de como usar um terminal.</li><li>Git instalado (aprenda <a href="https://www.freecodecamp.org/portuguese/news/git-clone-branch-como-clonar-um-branch-especifico/">como instalar Git aqui</a>, caso ainda não o tenha instalado).</li><li>Conhecimento básico de GitHub e repositórios.</li><li>Um sorriso em seu rosto. 😉</li></ul><h2 id="o-que-uma-branch-no-git"><strong>O que é uma<strong> </strong>b<strong>ranch n</strong>o<strong> Git?</strong></strong></h2><p>Uma <em>branch</em> é um conceito central no Git e no GitHub que você usará o tempo todo. As <em>branches</em> ajudam você a gerenciar diferentes versões de um projeto.</p><p>A <em>branch </em><code>main</code> &nbsp;é sempre a <em>branch</em> padrão em um repositório e é considerada o "código de produção e implementável". Você pode criar novas <em>branches </em>como <code>prod-staging</code> ou <code>prod-current</code> a partir da <em>branch </em><code>main</code>.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot-2021-02-27-at-7.19.26-PM.png" class="kg-image" alt="Screenshot-2021-02-27-at-7.19.26-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/09/Screenshot-2021-02-27-at-7.19.26-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/09/Screenshot-2021-02-27-at-7.19.26-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2022/09/Screenshot-2021-02-27-at-7.19.26-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot-2021-02-27-at-7.19.26-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1274" loading="lazy"><figcaption>Todas as branches em https://github.com/freeCodeCamp/freeCodeCamp</figcaption></figure><h3 id="o-que-uma-branch-remota-no-git"><strong>O que é uma branch remota no<strong> Git?</strong></strong></h3><p>Uma<strong> branch remota</strong> é uma referência ao estado das <em>branches </em>em um repositório remoto (uma versão do seu projeto hospedada na internet ou em uma rede como o GitHub).</p><p>Quando você clona um repositório, você extrai dados de um repositório na Internet ou de um servidor interno conhecido como <strong>remote</strong> (algo como <code>(remote)/(branch)</code>).</p><h2 id="o-que-origin-ou-remote-head-no-git"><strong>O que é<strong> </strong>o<strong>rigin (o</strong>u<strong> </strong>r<strong>emote </strong>h<strong>ead) n</strong>o<strong> Git?</strong></strong></h2><p>A palavra <em>origin</em> é um alias que o Git criou para substituir o URL remoto de um repositório remoto. Ele representa a <em>branch</em> padrão em um repositório remoto e é uma referência local que representa uma cópia local do HEAD no repositório remoto.</p><p><br>Em resumo, origin/HEAD representa a <em>branch</em> padrão no repositório remoto, que é definida automaticamente quando você clona um repositório da Internet.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot-2021-03-08-at-8.23.47-AM.png" class="kg-image" alt="Screenshot-2021-03-08-at-8.23.47-AM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/09/Screenshot-2021-03-08-at-8.23.47-AM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/09/Screenshot-2021-03-08-at-8.23.47-AM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2022/09/Screenshot-2021-03-08-at-8.23.47-AM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Screenshot-2021-03-08-at-8.23.47-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1274" loading="lazy"></figure><h2 id="como-redefinir-uma-branch-remota-para-origin-no-git"><strong>Como redefinir uma branch remota para origin no Git </strong></h2><p>Agora que você tem conhecimento prévio de como os repositórios remotos e <em>branches </em>funcionam, vamos resolver nosso problema e redefinir uma <em>branch </em>remota para a origem usando o comando <code>git reset --hard</code> .</p><p>Antes de fazer isso (se for a primeira vez), certifique-se de fazer back-up de sua <em>branch</em> antes de redefini-la caso algo dê errado. Você pode fazer back-up assim:</p><pre><code class="language-bash">git commit -a -m "Branch de back-up"
git branch branch-backup</code></pre><p>Agora, execute o comando abaixo para redefinir sua <em>branch</em> remota para a origem. Se você tiver um nome de <em>branch</em> remota e padrão diferente (que não seja <code>origin</code> ou <code>main</code>, respectivamente), basta substituí-los pelo nome apropriado.</p><pre><code class="language-bash">git fetch origin
git reset --hard origin/main</code></pre><p>Se você criou alguns arquivos ou diretórios novos, eles ainda podem permanecer após a redefinição. Você pode usar o comando abaixo para limpar a árvore de trabalho removendo recursivamente os arquivos da ramificação anterior que não estão sob controle de versão.</p><pre><code>git clean -xdf</code></pre><ul><li>A <em>flag</em> <code>-x</code> &nbsp; remove todos os arquivos não rastreados, incluindo diretórios de compilação ignorados.</li><li>A <em>flag</em> <code>-d</code> &nbsp;permite que o Git verifique recursivamente diretórios não rastreados quando nenhum caminho for especificado.</li><li>A <em>flag</em> <code>-f</code> &nbsp; substitui a configuração de limpeza padrão do Git e inicia a limpeza de arquivos e diretórios não rastreados.</li></ul><h2 id="conclus-o"><strong><strong>Conclus</strong>ão</strong></h2><p>Se o nome do seu repositório remoto não for "origin" e se a <em>branch</em> nomeada não for "main" no repositório remoto, não se esqueça de atualizar os comandos acima com os nomes apropriados. Você sempre pode executar &nbsp;<code>git remote show origin</code> para verificar isso.</p><p>Espero que este artigo tenha deixado você mais à vontade para trabalhar com <em>branches </em>e redefini-las. Não se esqueça ingressar no novo servidor de bate-papo do freeCodeCamp para interagir com outros alunos e fazer perguntas. Obrigado pela leitura! 💙</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como animar seu histórico de commits do Git com git-story ]]>
                </title>
                <description>
                    <![CDATA[ Muitas vezes, é útil para os desenvolvedores visualizarem aspectos de seus projetos de código. Especialmente em sistemas de controle de versão como o Git, onde é essencial entender o fluxo de trabalho da equipe. Uma maneira de abordar isso no Git é desenhar um grafo como o que você viu ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-animar-seu-historico-de-commits-do-git-com-git-story/</link>
                <guid isPermaLink="false">62da345cfea2f10707d66bcc</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Thiago Costa Barbosa ]]>
                </dc:creator>
                <pubDate>Wed, 17 Aug 2022 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/07/git-story-image-1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/animate-your-git-repo-with-git-story/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Animate Your Git Commit History with git-story</a>
      </p><p>Muitas vezes, é útil para os desenvolvedores visualizarem aspectos de seus projetos de código. Especialmente em sistemas de controle de versão como o Git, onde é essencial entender o fluxo de trabalho da equipe.</p><p>Uma maneira de abordar isso no Git é desenhar um grafo como o que você viu na imagem inicial.</p><p>Você, provavelmente, já encontrou imagens como essa quando estava <a href="https://initialcommit.com/cluster/git-commands-git-cheat-sheets">aprendendo como usar o Git</a> (texto em inglês).</p><p>Esse grafo mostra um exemplo de histórico de revisões em um repositório do Git.</p><p>No Git, o histórico de revisões é representado como um DAG, ou <strong><strong>Directed Acyclic Graph</strong></strong> (grafo acíclico direcionado), que é um tipo de grafo de rede. Cada revisão é exibida como um círculo e as revisões são encadeadas usando setas. Cada seta aponta de uma revisão para sua antecessora imediata.</p><p>Na maioria das vezes, se você desejar um grafo desses, precisa desenhá-lo (manual ou digitalmente) – o que leva tempo e esforço. Além disso, esses grafos são estáticos e, em certos casos, seria muito mais interessante animar a progressão das revisões em um vídeo.</p><p>Por esses motivos, criei o <strong><strong><a href="https://initialcommit.com/tools/git-story">Git Story</a></strong></strong> (texto em inglês), que permite gerar facilmente vídeos em mp4 apresentando o layout e a progressão do histórico do Git, com apenas um único comando: <code>git-story</code>.</p><h2 id="como-visualizar-o-hist-rico-de-revis-es-do-git"><strong>Como visualizar o histórico de revisões do Git</strong></h2><p>No Git, uma revisão também é conhecida como <em>commit</em>. Ela representa um conjunto de alterações ao conteúdo feitas em um momento específico por uma pessoa específica.</p><p>Existem vários componentes adicionais que nos ajudam a entender visualmente nosso histórico do Git.</p><h3 id="propriedades-dos-commit"><strong>Propriedades dos commit</strong></h3><p>Ao fazer um <em>commit</em> no Git, a legibilidade é importante. Portanto, é uma prática recomendada deixar uma <a href="https://initialcommit.com/blog/git-commit-messages-best-practices">mensagem no <em>commit</em></a> (texto em inglês) de forma clara, descrevendo sua alteração. Isso ajuda outros desenvolvedores que visualizam o histórico de <em>commits</em> a entender o propósito de cada alteração.</p><p>O ID do <em>commit</em> é um identificador exclusivo para cada <em>commit</em>, gerado especificamente a partir de seu conteúdo. Como usuário do Git, você provavelmente já viu que muitos comandos dele aceitam como argumento um ID de <em>commit</em> total ou parcial. Por esse motivo, ter IDs de <em>commit </em>disponíveis nas visualizações do Git pode ser muito útil.</p><h3 id="refer-ncias-branches-head-e-tags"><strong>Referências: branches, HEAD e tags</strong></h3><p>Ao visualizar o histórico do Git, também é útil saber onde você está. E uma referência no Git te ajuda a entender como os <em>commits</em> estão organizados no seu repositório.</p><p>Referências são rótulos (<em>labels</em>) que o Git anexa a <em>commits</em> específicos. Nomes de <em>branch</em>, <a href="https://initialcommit.com/blog/what-is-git-head">Git HEAD</a> (texto em inglês) e <em>tags </em>são todos exemplos de referências. Você pode pensar em um referência como um nome legível para nós, humanos, que aponta para um <em>commit</em> específico.</p><h3 id="v-deo-gerado-pelo-git-story"><strong>Vídeo gerado pelo Git Story</strong></h3><p>O <a href="https://initialcommit.com/tools/git-story"><strong>Git Story</strong></a> (texto em inglês) analisa todas essas informações para você – <em>commits</em>, relacionamentos e referências – e as anima em um vídeo <code>.mp4</code>. A melhor parte é que tudo o que você precisa fazer é navegar no terminal até o seu projeto e executar o comando <code>git-story</code>.</p><p>Abaixo temos um exemplo de uma animação de vídeo gerada pelo Git Story:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.17977528089888%;" class="fluid-width-video-wrapper">
            <iframe width="356" height="200" src="https://www.youtube.com/embed/fI9D-c9wgPs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="Git Story Sample 1" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><h2 id="por-que-escrevi-o-git-story-em-python"><strong>Por que escrevi o Git Story em Python</strong></h2><p>Eu escolhi escrever Git Story em Python, pois existem duas bibliotecas muito úteis que alimentam este projeto.</p><h3 id="gitpython"><strong>GitPython</strong></h3><p>A primeira é chamada <a href="https://gitpython.readthedocs.io/en/stable/intro.html">GitPython</a> (texto em inglês), que é um pacote Python que fornece acesso a dados de repositórios do Git através de um conjunto de métodos práticos. É assim que o Git Story acessa os dados do repositório local do Git para animá-lo:</p><pre><code class="language-python">import git

repo = git.Repo(search_parent_directories=True)</code></pre><p>Isso cria um objeto do repositório na memória do programa em Python que permite acesso aos objetos subjacentes do Git, além de suas propriedades. Uma lista de <em>commits </em>pode ser acessada da seguinte forma:</p><pre><code class="language-python">commits = list(repo.iter_commits(REF))

# Isso puxa uma lista de commits, de trás para frente, de REF
# REF pode ser um nome de branch, tag, HEAD ou uma ID de um commit</code></pre><p>A iteração na lista de <em>commits </em>permite o acesso às propriedades de cada <em>commit</em>, que são usadas na próxima etapa para gerar a animação.</p><h3 id="manim"><strong>Manim</strong></h3><p>A segunda dependência é chamada <a href="https://www.manim.community/">Manim</a> (texto em inglês)<a href="https://www.manim.community/">,</a> que é usada para gerar vídeos de matemática animados usando uma API em Python. O Manim facilita muito a criação de objetos em Python que representam linhas, formas, textos e equações e a colocação desses objetos em uma animação.</p><p>O Git Story usa o Manim para desenhar os círculos, as setas, os textos, e os nomes de cada <a href="https://initialcommit.com/blog/git-branches">branch do Git</a> (texto em inglês) e cada referência que representa o intervalo do seu histórico do Git obtido pelo GitPython.</p><p>Esse é um código que mostra como o Manim é usado para criar um círculo vermelho para cada <em>commit</em>:</p><pre><code class="language-python">circle = Circle(stroke_color=commitFill, fill_color=commitFill, fill_opacity=0.25)</code></pre><p>Aqui vemos como o Manim é usado para criar as setas entre os <em>commits</em>:</p><pre><code class="language-python">arrow = Arrow(start=RIGHT, end=LEFT, color=self.fontColor).next_to(circle, LEFT, buff=0)</code></pre><p>Por fim, aqui vemos como esses objetos são adicionados a uma animação:</p><pre><code class="language-python">self.play(Create(circle), Create(arrow))</code></pre><h2 id="como-instalar-o-git-story"><strong>Como instalar o Git Story</strong></h2><ol><li>Instale o <a href="https://www.manim.community/">manim e suas dependências em seu sistema operacional</a></li><li>Instale o GitPython :<code>$ pip3 install gitpython</code></li><li>Instale o git-story: <code>$ pip3 install git-story</code></li></ol><h2 id="como-usar-o-git-story"><strong>Como usar o Git Story</strong></h2><ol><li>Abra um terminal de linha de comando</li><li>Navegue até a pasta raiz do seu projeto Git usando <code>cd</code></li><li>Execute o comando: <code>git-story</code></li></ol><p>A execução deste comando gerará uma animação de vídeo <code>.mp4</code> dos 8 commits mais recentes em seu repositório Git. O arquivo de vídeo será colocado no diretório atual, no caminho <code>./git-story_media/videos</code>.</p><h2 id="como-personalizar-a-anima-o-do-git-story"><strong>Como personalizar a animação do Git Story</strong></h2><p>O Git Story inclui várias formas de modificar como seu repositório do Git é representado no vídeo gerado. Você faz isso por meio de opções e <em>flags </em>da linha de comando.</p><p>Para especificar o número de <em>commits </em>para animar, por exemplo, use a opção <code>--commits=X</code>, onde <code>X</code> é o número de <em>commits</em> que você deseja mostrar.</p><p>Você também pode querer começar a animar a partir de um <em>commit </em>específico, que não o <code>HEAD</code>. Para isso, você pode usar a opção <code>--commit-id=ref</code> para selecionar o <em>commit</em> inicial pelo qual deseja começar, de trás para frente. Em vez de <code>ref</code>, você também pode substituir por um ID total ou parcial de um <em>commit</em>, nome de branch ou <a href="https://initialcommit.com/blog/git-tag">tag do Git</a> (texto em inglês).</p><p>Você pode usar a <em>flag</em> <code>--reverse</code> para animar os <em>commits</em> do mais novo para o mais antigo, que é a ordem cronológica reversa, para corresponder melhor à saída de <a href="https://initialcommit.com/blog/git-log">log do Git</a> (texto em inglês).</p><p>Experimente a <em>flag</em> <code>--low-quality</code> para acelerar o tempo de geração da animação durante o teste. Quando estiver satisfeito com a aparência da sua animação, remova a <em>flag</em> e execute o comando novamente para obter uma versão final de melhor qualidade.</p><p>Se preferir um esquema de cores claras em vez do padrão escuro, você pode especificar a <em>flag</em> <code>--light-mode</code>.</p><p>Para fins de apresentação, você pode adicionar um título de introdução, logotipo e conclusão à sua animação. Você pode fazer isso com as seguintes opções:</p><pre><code class="language-sh">$ git-story --show-intro --title "My Git Repo" --show-outro --outro-top-text "My Git Repo" --outro-bottom-text "Thanks for watching!" --logo path/to/logo.png</code></pre><p>Use a opção <code>--media-dir=path/to/output</code> para definir o caminho do vídeo a ser gerado. Isso é útil se você não quiser que arquivos extras sejam criados dentro do seu projeto.</p><p>Finalmente, você pode querer testar a <em>flag </em><code>--invert-branches</code> se o histórico de <em>commits </em>do Git tiver vários <em>branches</em>. Essa <em>flag </em>mudará a ordem em que as <em>branches</em> são analisadas, o que altera a orientação da <em>branch</em> no vídeo gerado. Algumas animações ficarão melhores com essa <em>flag</em> definida e outras não.</p><p>Aqui está um exemplo final que mostra a aparência do vídeo quando existem várias <em>branches</em> no intervalo de <em>commits</em>:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.17977528089888%;" class="fluid-width-video-wrapper">
            <iframe width="356" height="200" src="https://www.youtube.com/embed/0uj5jRfOaZc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="Git Story Sample 2" name="fitvid1"></iframe>
          </div>
        </div>
      </figure><h2 id="resumo"><strong>Resumo</strong></h2><p>Git Story é uma ferramenta de linha de comando que escrevi em Python para facilitar a criação de animações de vídeo do seu histórico de <em>commits </em>do Git. As dependências incluem Manim e GitPython.</p><p>A animação exibe o conjunto desejado de <em>commits</em> e seus relacionamentos, juntamente com os nomes das <em>branches</em>, o <em>commit</em> <code>HEAD</code> e as <em>tags</em>.</p><p>O Git Story tem uma variedade de <em>flags</em> e opções de linha de comando que permitem personalizar a animação. Execute o comando <code>git-story -h</code> para exibir a lista completa de opções disponíveis.</p><p>Sinta-se à vontade para enviar um e-mail para o autor deste artigo com comentários, perguntas ou sugestões: <a href="mailto:jacob@initialcommit.io">jacob@initialcommit.io</a>.</p><p><em>Pull requests</em> também são muito bem-vindos à página do <a href="https://github.com/initialcommit-com/git-story">Git Story no GitHub</a>.</p><p>Obrigado pela ler e uma boa programação para você!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Uma introdução ao git merge e ao git rebase: o que são e como usá-los ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Vali Shah Por sermos desenvolvedores, muitos de nós têm de escolher entre merge e rebase. Com todas as referências que pegamos da internet, todos acreditam em "Não usar o rebase, pois ele pode causar problemas sérios." Aqui, explicarei o que são o merge e o rebase, por que ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/uma-introducao-ao-git-merge-e-ao-git-rebase-o-que-sao-e-como-usa-los/</link>
                <guid isPermaLink="false">62b0d86887787706fc0fedec</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Mon, 20 Jun 2022 21:25:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_9LlKBmfWia1Uou0ubjWkzg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/an-introduction-to-git-merge-and-rebase-what-they-are-and-how-to-use-them-131b863785f/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">An introduction to Git merge and rebase: what they are, and how to use them</a>
      </p><p>Escrito por: Vali Shah</p><p>Por sermos desenvolvedores, muitos de nós têm de escolher entre <strong><em>merge</em></strong> e <em><strong>rebase</strong></em>. Com todas as referências que pegamos da internet, todos acreditam em "Não usar o rebase, pois ele pode causar problemas sérios." Aqui, explicarei o que são o merge e o rebase, por que você deve (ou não) utilizá-los, e como fazer isso.</p><p>Git merge e git rebase servem ao mesmo propósito. Eles foram projetados para integrar as alterações de diversas <em>branches</em> em uma única. Embora o objetivo final seja o mesmo, esses dois métodos fazem isso de modos diferentes, sendo útil saber a diferença entre eles para auxiliar você a se tornar um <a href="https://www.microverse.org/" rel="noopener">desenvolvedor de software melhor.</a></p><p>Essa é uma pergunta que divide a comunidade do Git. Alguns creem que você deve sempre usar o rebase, enquanto outros acham que você deve sempre usar merge. Os dois lados apresentam benefícios convincentes.</p><h3 id="git-merge"><strong><strong>Git </strong>m<strong>erge</strong></strong></h3><p>Fazer um merge é uma prática comum para desenvolvedores que usam sistemas de controle de versão. Sejam as branches criadas para testes ou reparos de bugs, seja por outros motivos, o merge faz o commit de alterações para outro local. Para ser mais específico, o merge leva o conteúdo de uma branch de origem e o integra à branch de destino. Nesse processo, somente a branch de destino é alterada. O histórico da branch de origem permanece o mesmo.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/VonhijTBQgjwtRXz31wLzF7iWDnDFk2o8EWi.png" class="kg-image" alt="VonhijTBQgjwtRXz31wLzF7iWDnDFk2o8EWi" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/VonhijTBQgjwtRXz31wLzF7iWDnDFk2o8EWi.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/VonhijTBQgjwtRXz31wLzF7iWDnDFk2o8EWi.png 784w" sizes="(min-width: 720px) 720px" width="784" height="428" loading="lazy"><figcaption>Merge das branches master e feature (branch de um novo recurso)</figcaption></figure><h4 id="vantagens"><strong>Vantagens</strong></h4><ul><li>Simples e conhecido</li><li>Preserva o histórico completo e a ordem cronológica</li><li>Mantém o contexto da branch</li></ul><h4 id="desvantagens"><strong>Desvantagens</strong></h4><ul><li>O histórico de commits pode ficar poluído com os diversos commits das ações de merge</li><li>Depurar usando <code>git bisect</code> pode ser mais difícil</li></ul><h4 id="como-fazer"><strong>Como fazer</strong></h4><p>Fazer o merge da branch master na branch feature usando os comandos <code>checkout</code> e <code>merge</code>.</p><pre><code class="language-bash">$ git checkout feature
$ git merge master

(ou)

$ git merge master feature</code></pre><p>Isso criará um "<strong><strong>commit</strong> de merge</strong>" na branch feature contendo o histórico das duas branches.</p><h3 id="git-rebase"><strong><strong>Git </strong>r<strong>ebase</strong></strong></h3><p>Rebase é a outra maneira de integrar alterações de uma branch em outra. Rebase comprima todas as alterações em um único "patch". Em seguida, ele integra o patch na branch de destino.</p><p>Diferente do merge, o rebase "achata" o histórico, pois transfere o trabalho completo de uma branch para outra. No processo, o histórico indesejado é eliminado.</p><blockquote><em><em>Rebases </em>são a maneira como as alterações devem passar do topo da hierarquia para baixo<em>, </em>enquanto os<em> merges </em>são como eles devem voltar para o topo</em></blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/aEjZMJ6s4rDVqzXveqgLrwkQ0RJEvOTjAIUc.png" class="kg-image" alt="aEjZMJ6s4rDVqzXveqgLrwkQ0RJEvOTjAIUc" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/aEjZMJ6s4rDVqzXveqgLrwkQ0RJEvOTjAIUc.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/aEjZMJ6s4rDVqzXveqgLrwkQ0RJEvOTjAIUc.png 774w" sizes="(min-width: 720px) 720px" width="774" height="456" loading="lazy"><figcaption>Rebase da branch feature na master</figcaption></figure><h4 id="vantagens-1"><strong>Vantagens</strong></h4><ul><li>Simplifica um histórico potencialmente complexo</li><li>Manipular um único commit é fácil (por exemplo, revertê-lo)</li><li>Evita o "ruído" dos commits de merge em repositórios de muito tráfego com branches de muito tráfego</li><li>Limpa os commits intermediários, tornando-os um único commit, o que pode ser útil para as equipes de DevOps</li></ul><h4 id="desvantagens-1"><strong>Desvantagens</strong></h4><ul><li>Transformar a branch feature em apenas alguns commits pode ocultar o contexto</li><li>Fazer o rebase de repositórios públicos pode ser perigoso ao trabalhar como uma equipe</li><li>Dá mais trabalho usar o rebase para manter a branch feature sempre atualizada</li><li>Fazer o rebase em branches remotas exige o uso de um <em><em>force push. </em></em>O maior problema que as pessoas enfrentam é fazerem um force push mas não terem definido um git push padrão. Isso resulta em atualizações a todas as branches que tenham o mesmo nome, seja local ou remotamente, e é um <strong>pavor<strong> </strong></strong>ter de lidar com isso.</li></ul><blockquote><em>Se você fizer o <em>rebase incorre</em>tamente e, acidentalmente,<em> </em>reescrever o histórico<em>, </em>isso pode levar a sérios problemas. Por isso, certifique-se de que sabe o que está fazendo<em>!</em></em></blockquote><h4 id="como-fazer-1"><strong>Como fazer</strong></h4><p>Fazer o rebase da branch feature na branch master usando os seguintes comandos.</p><pre><code>$ git checkout feature
$ git rebase master</code></pre><p>Isso move toda a branch feature para a branch master. Isso ocorre ao reescrevermos o histórico do projeto, criando commits totalmente do zero para cada commit na branch (feature) original.</p><h4 id="rebase-interativo"><strong>R<strong><strong><strong>ebas</strong></strong></strong>e interativo</strong></h4><p>Ele permite alterar os commits quando eles são movidos para a nova branch. Ele é mais poderoso que o rebase automatizado, por oferecer controle completo sobre o histórico de commits da branch. Tipicamente, é usado para limpar um histórico bagunçado antes de fazer o merge da branch feature na branch master.</p><pre><code>$ git checkout feature
$ git rebase -i master</code></pre><p>Isso abrirá o editor, listando todos os commits que estão prestes a ser movidos.</p><pre><code class="language-bash">pick 22d6d7c Mensagem do commit nº 1
pick 44e8a9b Mensagem do commit nº 2
pick 79f1d2h Mensagem do commit nº 3</code></pre><p>Ele define com exatidão qual será a aparência da branch após a realização do rebase. Ao reordenar as entidades, você pode fazer com que o histórico tenha a aparência que você quiser. Por exemplo, você pode usar comandos como <code>fixup</code>, <code>squash</code>, <code>edit</code> e outros no lugar de <code>pick</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/c0OgwrajpcLfLs75zq0mF5DP3sTBQ-oLjU02.png" class="kg-image" alt="c0OgwrajpcLfLs75zq0mF5DP3sTBQ-oLjU02" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/c0OgwrajpcLfLs75zq0mF5DP3sTBQ-oLjU02.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/c0OgwrajpcLfLs75zq0mF5DP3sTBQ-oLjU02.png 800w" sizes="(min-width: 720px) 720px" width="800" height="465" loading="lazy"></figure><h3 id="qual-deles-usar"><strong>Qual deles usar?</strong></h3><p>Então, qual deles é o melhor? O que recomendam os especialistas?</p><p>É difícil generalizar e decidir por um ou por outro, já que cada equipe é diferente. Temos, porém, de começar de algum lugar.</p><p>As equipes precisam considerar diversas questões ao definir suas políticas de uso de git rebase e de git merge. Acontece que uma estratégia de fluxo de trabalho não é melhor do que a outra. Tudo depende de sua equipe.</p><p>Considere o nível do rebase e a competência do Git dentro de sua organização. Determine o grau de avaliação da simplicidade do rebase em comparação com a rastreabilidade e o histórico do merge.</p><p>Por fim, as decisões sobre o merge e o rebase devem ser consideradas no contexto de uma estratégia clara de criação de branches. Uma estratégia de sucesso para a criação de branches é projetada em torno da organização de suas equipes.</p><h3 id="o-que-eu-recomendo"><strong>O que eu recomendo<strong>?</strong></strong></h3><p>À medida que a equipe cresce, se tornará mais difícil gerenciar o rastrear alterações no desenvolvimento com uma <strong>política de sempre usar <strong>merge</strong></strong>.<strong><strong> </strong></strong>Para ter um histórico limpo e compreensível dos commits, o uso de <strong>r<strong>ebase </strong></strong>é razoável e eficaz.</p><p>Considerando as seguintes circunstâncias e diretrizes, você pode obter o melhor do <strong>r<strong>ebase:</strong></strong></p><ul><li><strong>Você está desenvolvendo no local<strong>: </strong></strong>se você não tiver compartilhado seu trabalho com mais ninguém. pode preferir o rebase em vez do merge para manter limpo seu histórico. Se você tem um fork pessoal do repositório, que não é compartilhado com outros desenvolvedores, é seguro usar o rebase mesmo após ter feito o push para sua branch.</li><li><strong>Seu código está pronto para ser revisado<strong>:</strong></strong> você criou uma <em>pull request</em>. Outras pessoas estão revisando seu trabalho e, potencialmente, fazendo o fetch dele em seus forks para uma revisão local. Neste ponto, você não deve fazer o rebase de seu trabalho. Você deve criar commits de "retrabalho" e atualizar sua branch feature. Isso ajuda na rastreabilidade no pull request e evita a quebra acidental do histórico.</li><li><strong>A revisão está concluída e pronta para ser integrada à <strong>branch</strong> de destino</strong>. Parabéns! Você está prestes a excluir sua branch feature. Dado que outros desenvolvedores não estarão fazendo o fetch e o merge destas alterações a partir daqui, essa é a sua chance de limpar o histórico. Neste ponto, você pode reescrever o histórico e encolher os commits originais e os commits de "retrabalho dos PRs" e de "merge" em um conjunto pequeno de commits focalizados. Criar um merge explícito para esses commits é opcional, mas tem seu valor. Ele registra quando o feature (recurso) foi passado oficialmente para a branch master.</li></ul><h3 id="conclus-o"><strong><strong>Conclus</strong>ão</strong></h3><p>Espero que essa explicação tenha dado algumas ideias sobre <strong>g<strong>it merge </strong></strong>e<strong> g<strong>it rebase. </strong></strong>As estratégias de merge e de rebase são sempre discutíveis. Talvez, porém, este artigo ajude você a clarear suas dúvidas e permita a você adotar uma abordagem que funcione para sua equipe.</p><p>Eu gostaria muito de escrever sobre <strong>fluxos de trabalho do</strong> <strong><strong>Git </strong></strong>e sobre conceitos do <strong><strong>Git</strong></strong>. Gostaria de saber de você sobre o que deseja que eu escreva a seguir. </p><p>Tudo de bom!</p><p><code><strong><strong>code</strong></strong> = <strong><strong>co</strong></strong>ffee + <strong><strong>de</strong></strong>veloper</code> (código = café + desenvolvedor)</p><p><a href="https://www.microverse.org/" rel="noopener">Microverse - escola de programação para desenvolvedores de software</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/imcvBz4swIFiLs19gCb7EiWDFbtWOA9hFGmb.png" class="kg-image" alt="imcvBz4swIFiLs19gCb7EiWDFbtWOA9hFGmb" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/imcvBz4swIFiLs19gCb7EiWDFbtWOA9hFGmb.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/imcvBz4swIFiLs19gCb7EiWDFbtWOA9hFGmb.png 800w" sizes="(min-width: 720px) 720px" width="800" height="308" loading="lazy"></figure> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Aprenda o básico de Git em menos de 10 minutos ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Gowtham Venkatesan Sim, o título é clickbait. Não tem como entender o básico da tecnologia do Git em apenas 10 minutos. Mas você pode chegar bem perto disso em cerca de 25 minutos. Esse é o objetivo deste artigo. Se quer começar a aprender sobre a tecnologia do ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/aprenda-o-basico-de-git-em-menos-de-10-minutos/</link>
                <guid isPermaLink="false">629e0e3708b5de06cf9f594c</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Nielda Karla ]]>
                </dc:creator>
                <pubDate>Wed, 08 Jun 2022 03:11:07 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_4kDk9CZEEJBllqd3Fx549A.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/learn-the-basics-of-git-in-under-10-minutes-da548267cc91/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Learn the Basics of Git in Under 10 Minutes</a>
      </p><p>Escrito por: Gowtham Venkatesan</p><p>Sim, o título é clickbait. Não tem como <em>entender</em> o básico da tecnologia do Git em apenas 10 minutos. Mas você pode chegar bem perto disso em cerca de 25 minutos. Esse é o objetivo deste artigo.</p><p>Se quer começar a aprender sobre a tecnologia do Git, você veio ao lugar certo. Este é um guia abrangente para iniciantes no Git. Existem muitos <em>clients</em> para Git. A tecnologia é a mesma, não importando o <em>client</em>. Neste guia, porém, usaremos o GitHub para entender o Git.</p><h4 id="vamos-come-ar-"><strong>Vamos começar!</strong></h4><h3 id="o-que-o-controle-de-vers-o"><strong>O que é o controle de versão?</strong></h3><blockquote>O controle de versão é um sistema que registra alterações em um arquivo ou conjunto de arquivos ao longo do tempo para que você possa recuperar versões específicas posteriormente. Então, idealmente, podemos colocar qualquer arquivo que esteja no computador dentro do controle de versão.</blockquote><h4 id="umm-certo-mas-para-que-fazer-isso"><strong>Umm… certo… mas para que fazer isso?</strong></h4><h4 id="esse-o-motivo-"><strong>Esse é o motivo:</strong></h4><p>Um Sistema de Controle de Versão (VCS) permite que você reverta arquivos de volta a um estado anterior, reverta todo o projeto de volta a um estado anterior, revise as alterações feitas ao longo do tempo, veja quem modificou pela última vez algo que possa estar causando um problema, quem introduziu um problema e quando e muito mais. Usar um VCS também significa que, se você estragar tudo ou perder arquivos, geralmente conseguirá recuperar tudo facilmente. Às vezes, você só quer saber <strong>"quem escreveu essa porcaria</strong>", e ter acesso a essa informação vale a pena.</p><h3 id="o-que-o-git"><strong>O que é o Git?</strong></h3><p>Git é um sistema de controle de versão para rastrear alterações em arquivos de computador e coordenar o trabalho nesses arquivos entre várias pessoas. Git é um <strong>sistema de controle de versão distribuído</strong>. Portanto, ele não depende necessariamente de um servidor central para armazenar todas as versões dos arquivos de um projeto. Em vez disso, cada usuário "clona" uma cópia de um repositório (uma coleção de arquivos) e tem o histórico <strong>completo </strong>do projeto em seu próprio disco rígido. Esse clone tem todos os metadados do original enquanto o próprio original é armazenado em um servidor auto-hospedado ou em um serviço de hospedagem de terceiros, como o GitHub.</p><p>O Git ajuda você a <strong>acompanhar as alterações</strong> feitas em seu código. É basicamente a guia de histórico do seu editor de código (sem modo de navegação anônima). Se, a qualquer momento durante a codificação, você encontrar um erro fatal e não souber o que está causando isso, você sempre poderá voltar ao estado estável. Por isso, é muito útil para depuração (debugging). Ou você pode simplesmente ver quais alterações você fez no seu código ao longo do tempo.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_Lp_67l9zwur7aaFAhpVDrg.png" class="kg-image" alt="1_Lp_67l9zwur7aaFAhpVDrg" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/1_Lp_67l9zwur7aaFAhpVDrg.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_Lp_67l9zwur7aaFAhpVDrg.png 800w" sizes="(min-width: 720px) 720px" width="800" height="325" loading="lazy"><figcaption>Um exemplo simples do histórico de versões de um arquivo.</figcaption></figure><p>No exemplo acima, os três cartões representam versões diferentes do mesmo arquivo. Podemos selecionar qual versão do arquivo queremos usar a qualquer momento. Assim, posso pular para qualquer versão do arquivo na linha do tempo do git.</p><p>O Git também ajuda a <strong>sincronizar o código </strong>entre várias pessoas. Então, imagine que você e seu amigo estão colaborando em um projeto. Vocês dois estão trabalhando nos mesmos arquivos do projeto. O Git pega essas alterações que você e seu amigo fizeram de forma independente e as mescla em um único repositório "<strong>master</strong>"/"<strong>main</strong>". Portanto, usando o Git, você pode garantir que ambos estejam trabalhando na versão mais recente do repositório. Assim, você não precisa se preocupar em enviar seus arquivos uns para os outros e trabalhar com um número absurdo de cópias do arquivo original. Colaborar à distância se torna tão fácil quanto escrever em HTML.</p><h3 id="fluxo-de-trabalho-do-git-"><strong>Fluxo de trabalho do Git:</strong></h3><p>Antes de começar a trabalhar com os comandos do Git, é preciso entender o que eles representam.</p><h4 id="o-que-um-reposit-rio-do-git"><strong>O que é um repositório do Git?</strong></h4><p>Um repositório (também conhecido por "repo") nada mais é do que uma coleção de código-fonte.</p><h4 id="existem-quatro-elementos-fundamentais-no-fluxo-de-trabalho-do-git-"><strong>Existem quatro elementos fundamentais no fluxo de trabalho do Git.</strong></h4><p><strong>Diretório de trabalho</strong>, <strong>área de "s<strong>taging</strong>"</strong>,<strong> repositorio</strong> <strong>l<strong>ocal </strong></strong>e <strong>repositório remoto</strong>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_iL2J8k4ygQlg3xriKGimbQ.png" class="kg-image" alt="1_iL2J8k4ygQlg3xriKGimbQ" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/1_iL2J8k4ygQlg3xriKGimbQ.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_iL2J8k4ygQlg3xriKGimbQ.png 800w" sizes="(min-width: 720px) 720px" width="800" height="470" loading="lazy"><figcaption>Diagrama de um fluxo de trabalho simples do Git</figcaption></figure><p><strong>Se você pensar em um arquivo no seu diretório de trabalho, ele pode estar em três estados diferentes. </strong></p><ol><li><strong>Staged:</strong> significa que os arquivos com as alterações atualizadas estão marcados para serem confirmados no repositório local, mas ainda não foram confirmados.</li><li><strong>Modificado:</strong> significa que os arquivos com as alterações atualizadas ainda não estão armazenados no repositório local.</li><li><strong>Confirmado:</strong> significa que as alterações feitas em seu arquivo estão armazenadas com segurança no repositório local.</li></ol><ul><li><code>git add</code> é um comando usado para adicionar um arquivo que está no diretório de trabalho à área de teste (staging).</li><li><code>git commit</code> é um comando usado para adicionar todos os arquivos que estão na área de staging no repositório local.</li><li><code>git push</code> é um comando usado para adicionar todos os arquivos confirmados no repositório local ao repositório remoto. Portanto, no repositório remoto, todos os arquivos e alterações estarão visíveis para qualquer pessoa com acesso ao repositório remoto.</li><li><code>git fetch</code> é um comando usado para obter arquivos do repositório remoto para o repositório local, mas não para o diretório de trabalho.</li><li><code>git merge</code> é um comando usado para obter os arquivos do repositório local para o diretório de trabalho.</li><li><code>git pull</code> é o comando usado para obter arquivos do repositório remoto diretamente no diretório de trabalho. É equivalente a um <code>git fetch</code> e um <code>git merge</code>.</li></ul><p><strong>Agora que sabemos o que é o Git e suas terminologias básicas, vamos ver como podemos colocar um arquivo no Git.</strong></p><p>Vamos fazer do jeito certo e do jeito difícil. Sem nenhuma aplicação de GUI.</p><p>Estou assumindo que você já tenha um arquivo que deseja colocar sob controle de versão. Caso não tenha nenhum arquivo, crie uma pasta de teste com o nome 'MuskCult' e adicione algum arquivo de código nele. </p><h3 id="passo-0-fa-a-uma-conta-no-github-d-"><strong>Passo 0: faça uma conta no GitHub. Dã.</strong></h3><p>Se você ainda não tem uma, você pode criar a sua <a href="https://github.com/join" rel="noopener">aqui</a>.</p><h3 id="passo-1-certifique-se-que-voc-tem-o-git-instalado-na-sua-m-quina-"><strong>Passo 1: certifique-se que você tem o Git instalado na sua máquina. </strong></h3><p>Se você é usuário <strong><strong>Mac</strong></strong>, abra o terminal e digite o seguinte comando:</p><pre><code>$ git --version</code></pre><p>Isso solicitará a abertura de um instalador se você ainda não tiver o Git. Então, configure-o usando o instalador. Se você já tiver o Git, ele apenas mostrará qual versão do Git você instalou.</p><p>Se você é usuário <strong><strong>Linux</strong></strong>(deb), digite o seguinte comando no terminal:</p><pre><code>$ sudo apt install git-all</code></pre><p>Se você está no <strong><strong>Windows</strong></strong>:</p><pre><code>$ compre um mac</code></pre><p>Brincadeira… calma… a quantidade de gente brava comigo agora… poxa vida…<br>Vá nesse <a href="https://www.apple.com/macos/what-is/" rel="noopener"><strong><strong>link</strong></strong></a> ou nesse<strong><strong> <a href="https://gitforwindows.org/" rel="noopener">link</a></strong></strong> para mais informações. </p><h3 id="passo-2-diga-ao-git-quem-voc-"><strong>Passo 2: diga ao Git quem você é.</strong></h3><p>Apresente-se. Sério, mencione seu nome de usuário e endereço de e-mail ao Git, já que todo <em>commit</em> do Git usará essas informações para identificar você como autor.</p><pre><code>$ git config --global user.name "SEU_NOME_DE_USUÁRIO"

$ git config --global user.email "seu_email@email.com"

$ git config --global --list # Para conferir as informações que você acaba de fornecer</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_JbyUdhLMEdglRxQk6PH7Vg.gif" class="kg-image" alt="1_JbyUdhLMEdglRxQk6PH7Vg" width="800" height="477" loading="lazy"></figure><h3 id="passo-3-gere-verifique-se-sua-m-quina-tem-chaves-ssh-pr-existentes-opcional-"><strong>Passo 3: gere/verifique se sua máquina tem chaves SSH pré-existentes. (Opcional)</strong></h3><p>Por quê? Ao usar o <strong>protocolo SSH,</strong> você pode se conectar e autenticar com <strong>servidores e serviços remotos</strong>. Com chaves SSH, você pode se conectar ao GitHub sem fornecer seu nome de usuário ou senha a cada visita. </p><p>Para aprender mais sobre SSH, clique neste<strong><strong> <a href="https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/about-ssh">link</a></strong></strong>.<br>Clique <strong><a href="https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys">aqui</a><strong> </strong></strong>para checar se você tem uma chave SSH.<br>Clique <strong><a href="https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent">aqui</a> </strong>para gerar uma chave SSH.<br>Clique <strong><a href="https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account">aqui</a></strong> para adicionar a chave SSH à sua conta GitHub.<br>Por fim, clique <strong><a href="https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection">aqui</a></strong> para testar sua conexão. </p><p>Se você de fato configurou seu SSH, substitua todos os comandos git que tenham um link por:</p><pre><code>Em vez de : https://github.com/nome_do_usuário/nome_do_repositório

Use       : git@github.com:nome_do_usuário/nome_do_repositório.git

           Obs, : você pode usar qualquer uma das maneiras. Você escolhe.</code></pre><p><strong>Eu usarei o protocolo<strong> SSH </strong>neste tutorial<strong>.</strong></strong></p><h3 id="passo-4-hora-de-usar-o-git"><strong>Passo 4: hora de usar o Git</strong></h3><p>Crie um novo repositório no GitHub. Siga este <a href="https://github.com/new">link</a>. Agora, localize a pasta que você deseja colocar no Git no seu terminal.</p><pre><code>$ cd Desktop/MuskCult</code></pre><h4 id="inicialize-o-git-"><strong>Inicialize o Git:</strong></h4><p>E para colocar algo no Git, digite:</p><pre><code>$ touch README.md    # Para criar um arquivo README no repositório
$ git init           # Inicia um repositório do Git vazio</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_Q_DUXRghgFQb9F47mUB6LQ.gif" class="kg-image" alt="1_Q_DUXRghgFQb9F47mUB6LQ" width="800" height="477" loading="lazy"></figure><p>Agora, edite o arquivo README.md para fornecer informações sobre o repositório.</p><h4 id="adicione-arquivos-rea-de-staging-para-confirma-o-"><strong>Adicione arquivos à área de staging para confirmação:</strong></h4><p>Para adicionar os arquivos ao repositório do Git para confirmação:</p><pre><code>$ git add .  
# Adiciona todos os arquivos no repositório local na área de staging para o commit

OU se quiser adicionar um arquivo específico

$ git add README.md 
# Para adicionar o arquivo específico</code></pre><h4 id="antes-de-confirmar-vamos-ver-quais-arquivos-est-o-em-staging-">Antes de confirmar, vamos ver quais arquivos estão em staging:</h4><pre><code>$ git status # Lista todos os arquivos novos ou modificados que farão parte do commit</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_a2_hw7cMe2R9R_aI86dB-A.gif" class="kg-image" alt="1_a2_hw7cMe2R9R_aI86dB-A" width="800" height="477" loading="lazy"></figure><h4 id="fa-a-o-commit-das-mudan-as-que-voc-fez-no-seu-reposit-rio-do-git-"><strong>Faça o commit das mudanças que você fez no seu repositório do Git: </strong></h4><p>Agora, para confirmar os arquivos que você adicionou ao repositório do Git:</p><pre><code>$ git commit -m "Primeiro commit"
# A mensagem entre aspas (" ") é fornecida para que outros usuários possam lê-la e ver que mudanças você fez</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_LoUwFy29RkgCS7hCajd_3g.gif" class="kg-image" alt="1_LoUwFy29RkgCS7hCajd_3g" width="800" height="478" loading="lazy"></figure><h4 id="retirar-de-um-commit-as-mudan-as-que-voc-fez-no-seu-reposit-rio-do-git-"><strong>Retirar de um commit as mudanças que você fez no seu repositório do Git:</strong></h4><p>Agora, imagine que você acabou de cometer algum erro no seu código ou colocou um arquivo indesejado dentro do repositório. Você pode remover os arquivos que acabou de adicionar usando:</p><pre><code>$ git reset HEAD~1
# Remove o commit mais recente
# Faça o commit novamente depois de ajustar!</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_rxOX_U-ZRmGfhgIhNWlDIQ.gif" class="kg-image" alt="1_rxOX_U-ZRmGfhgIhNWlDIQ" width="800" height="477" loading="lazy"></figure><h4 id="adicione-uma-origem-remota-e-fa-a-um-push-"><strong>Adicione uma "origem" remota e faça um push:</strong></h4><p>Uma coisa importante: toda vez que você fizer alterações em seus arquivos e salvá-los, <strong>eles não serão atualizados automaticamente</strong> no GitHub. Todas as alterações que fizemos no arquivo são atualizadas no repositório local. Agora, para atualizar as alterações no repositório "master"/"main":</p><pre><code>$ git remote add origin URL_do_repositório_remoto
# Define o novo repositório remoto</code></pre><p>O comando <strong><strong>git remote</strong></strong> permite que você crie, visualize e exclua conexões com outros repositórios. </p><pre><code>$ git remote -v
# Lista as conexões remotas que você tem com outros repositórios.</code></pre><p>O comando <strong><strong>git remote -v</strong></strong> lista os URLs de conexões remotas que você tem com outros repositórios. </p><pre><code>$ git push -u origin master # faz o push das alterações para "origin"</code></pre><p>O comando <strong><strong>git push </strong></strong>envia as alterações em seu repositório local para o repositório remoto que você especificou como origem (em inglês, <em>origin</em>).</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_w-nfopsKIks_JRzFe5D8xA.gif" class="kg-image" alt="1_w-nfopsKIks_JRzFe5D8xA" width="800" height="477" loading="lazy"></figure><p>E agora, se formos verificar nossa página de repositório no GitHub, ela deve ser algo assim:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_aQljQFkytY84BgmlVtpgmw.png" class="kg-image" alt="1_aQljQFkytY84BgmlVtpgmw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/1_aQljQFkytY84BgmlVtpgmw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_aQljQFkytY84BgmlVtpgmw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="491" loading="lazy"></figure><p>E é isso. Você acabou de adicionar os arquivos ao repositório que acabou de criar no GitHub.</p><h4 id="verifique-as-mudan-as-que-voc-fez-em-seu-arquivo-"><strong>Verifique as mudanças que você fez em seu arquivo:</strong></h4><p>Depois de começar a fazer alterações em seus arquivos e salvá-los, o arquivo não corresponderá à última versão que foi confirmada no Git por meio de um <em>commit</em>. Para ver as alterações que você acabou de fazer:</p><pre><code>$ git diff # Mostra as alterações de arquivos que ainda não estão em staging</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_xym1QvvvWorfoyGMXv28Yg.gif" class="kg-image" alt="1_xym1QvvvWorfoyGMXv28Yg" width="800" height="477" loading="lazy"></figure><h4 id="revertendo-para-a-ltima-vers-o-confirmada-para-o-reposit-rio-do-git-">Revertendo para a última versão confirmada para o repositório do Git:</h4><p>Agora, você pode optar por reverter para a última versão confirmada por <em>commit</em> digitando:</p><pre><code>$ git checkout .

OU se quiser fazer isso para um arquivo específico

$ git checkout -- &lt;nome_do_arquivo&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_HYgYkfo3W4MUA8CJl12rXg.gif" class="kg-image" alt="1_HYgYkfo3W4MUA8CJl12rXg" width="800" height="477" loading="lazy"></figure><h4 id="visualizando-o-hist-rico-de-commits-"><strong>Visualizando o histórico de <em>commits</em>:</strong></h4><p>Você pode usar o comando <strong><strong>git log</strong></strong> para ver o histórico de <em>commits</em> que você fez nos seus arquivos:</p><pre><code>$ git log</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_9w7uBJcQMxc708DBw8Sewg.gif" class="kg-image" alt="1_9w7uBJcQMxc708DBw8Sewg" width="800" height="473" loading="lazy"></figure><p>Cada vez que você faz mudanças que você deseja que estejam presentes no GitHub, o fluxo de comandos a seguir é o mais comum:</p><pre><code>$ git add .
$ git status # Lista todos os arquivos novos ou modificados que farão parte do commit
$ git commit -m "Segundo commit"
$ git push -u origin master</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_rWBJnBdF1V8YO_mi-jEfxA.gif" class="kg-image" alt="1_rWBJnBdF1V8YO_mi-jEfxA" width="800" height="477" loading="lazy"></figure><p>Agora, se formos ver nosso repositório, podemos identificar se o commit foi bem-sucedido observando a mensagem de commit de cada arquivo.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_QHM8m5HGavHkdzPz06UWGw.png" class="kg-image" alt="1_QHM8m5HGavHkdzPz06UWGw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/1_QHM8m5HGavHkdzPz06UWGw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_QHM8m5HGavHkdzPz06UWGw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="524" loading="lazy"></figure><h3 id="passo-5-muito-bem-mas-como-eu-fa-o-o-download-e-trabalho-com-outros-reposit-rios-do-github"><strong>Passo 5 : muito bem, mas... como eu faço o download e trabalho com outros repositórios do GitHub?</strong></h3><h4 id="clonando-um-reposit-rio-do-git-"><strong>Clonando um repositório do Git:</strong></h4><p>Localize o diretório em que deseja clonar o repositório. Copie o link do repositório desejado e digite:</p><pre><code>$ git clone URL_do_repositório_remoto</code></pre><p>Sinta-se à vontade para clonar o repositório que criei acima usando: <a href="https://github.com/Gothamv/MuskCult" rel="noopener">https://github.com/Gothamv/MuskCult</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_6NACk8-IiBjbauM-k-aesQ.gif" class="kg-image" alt="1_6NACk8-IiBjbauM-k-aesQ" width="800" height="477" loading="lazy"></figure><h4 id="fazendo-o-push-das-altera-es-para-o-reposit-rio-do-git-">Fazendo o <em>push</em> das alterações para o repositório do Git:</h4><p>Agora, você pode trabalhar nos arquivos que deseja e fazer o <em>commit </em>das alterações localmente. Se quiser enviar as mudanças para um repositório, precisa ser <a href="https://help.github.com/articles/inviting-collaborators-to-a-personal-repository/" rel="noopener">adicionado como &nbsp;um colaborador </a>do repositório ou criar algo conhecido como "<em>pull request</em>". Você pode verificar como elas são feitas <a href="https://docs.github.com/pt/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request">aqui</a> e me enviar um <em>pull request</em> com seu arquivo de código.</p><h4 id="colaborando-"><strong>Colaborando:</strong></h4><p>Imagine que você e seu amigo estão colaborando em um projeto. Vocês dois estão trabalhando nos mesmos arquivos de projeto. Cada vez que você faz algumas alterações e as envia para o repositório master/main, seu amigo precisa extrair as alterações que você enviou para o repositório do Git. Ou seja, para garantir que vocês estarão trabalhando na versão mais recente do repositório do Git toda vez que você começar a trabalhar, um comando <em>git pull</em> será necessário.</p><p>Abaixo temos um exemplo de um projeto em que meu amigo e eu estamos colaborando:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_2-tl2rHsgPqiv88aI55CPw.png" class="kg-image" alt="1_2-tl2rHsgPqiv88aI55CPw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/1_2-tl2rHsgPqiv88aI55CPw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_2-tl2rHsgPqiv88aI55CPw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="434" loading="lazy"><figcaption>Um commit acaba de ser feito no repositório</figcaption></figure><p>Portanto, para garantir que essas alterações sejam refletidas na minha cópia local do repositório:</p><pre><code>$ git pull origin master</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_ySDKu2OEdkc26yOUp-TJJQ.gif" class="kg-image" alt="1_ySDKu2OEdkc26yOUp-TJJQ" width="798" height="473" loading="lazy"></figure><h4 id="aqui-est-o-mais-dois-comandos-teis-do-git-"><strong>Aqui estão mais dois comandos úteis do Git:</strong></h4><pre><code>$ git fetch
    E
$ git merge</code></pre><p>De forma simplificada, <code>git fetch</code> seguido por um <code>git merge </code> é igual a <code>git pull</code>. Mas, então, por que eles existem?</p><p>Quando você usa <code>git pull</code>, o Git tenta automaticamente fazer seu trabalho por você. <strong>Ele percebe o contexto, </strong>então o Git mesclará quaisquer <em>commits </em>cujo <em>pull</em> foi realizado na <em>branch </em>em que você está trabalhando no momento. <code>git pull</code> <strong>mescla automaticamente os commits sem que você precise revisá-los primeiro. </strong></p><p>Quando você usa <code>git fetch</code>, o Git reúne todos os <em>commits </em>da <em>branch </em>de destino que não existem em sua <em>branch </em>atual e os <strong>armazena em seu repositório local.</strong> No entanto,<strong> ele não os mescla com sua <em>branch </em>atual.</strong> Isso é particularmente útil se você precisar manter seu repositório atualizado, mas estiver trabalhando em algo que pode quebrar se você atualizar seus arquivos. Para integrar os commits em sua <em>branch </em>master, use <code>git merge</code>.</p><h3 id="para-concluir-"><strong>Para concluir:</strong></h3><pre><code>.gitignore</code></pre><p>O que é isso?</p><p>O <code>.gitignore</code> diz ao Git quais arquivos (ou padrões) ele deve ignorar. Geralmente, ele é usado para evitar o <em>commit </em>de arquivos transitórios do seu diretório de trabalho que não são úteis para outros colaboradores, como produtos de compilação, arquivos temporários criados pelas IDEs, etc.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_3NFtOjfz0NvNSwba7YCmDA.png" class="kg-image" alt="1_3NFtOjfz0NvNSwba7YCmDA" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/06/1_3NFtOjfz0NvNSwba7YCmDA.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/06/1_3NFtOjfz0NvNSwba7YCmDA.png 800w" sizes="(min-width: 720px) 720px" width="800" height="625" loading="lazy"></figure><p>Assim, no exemplo acima, arquivos como __pycache__ e .DS_Store são usados ​​pelo sistema para armazenar informações para acesso mais rápido. Eles não são úteis para os outros colaboradores. Então, podemos dizer ao Git para ignorá-los adicionando-os a um &nbsp;arquivo <code>.gitignore</code>.</p><p>Use o comando <em>touch</em> (no Linux ou no Mac) para criar o arquivo <code>.gitignore</code>:</p><pre><code>$ touch .gitignore</code></pre><p>Você pode adicionar ao <code>.gitignore</code> os seguintes padrões para dizer ao Git para ignorar esses arquivos.</p><pre><code>/*.cmake
/*.DS_Store
/.user
/build
etc. dependendo dos arquivos que você quer que o Git não acompanhe</code></pre><h3 id="-basicamente-isso-que-t-nhamos-sobre-o-b-sico-do-git-fique-atento-parte-2-que-se-concentrar-em-branch-merge-stash-rebase-e-outros-"><strong>É </strong>basicamente isso que tínhamos sobre o básico do Git. Fique atento à parte 2, que se concentrará em branch, merge, stash, rebase e outros. </h3><h3 id="se-voc-gostou-do-artigo-n-o-se-esque-a-de-compartilhar-com-quem-puder-e-quiser-e-de-seguir-o-autor-para-saber-quando-chegar-a-parte-2-">Se você gostou do artigo, não se esqueça de compartilhar com quem puder e quiser e de seguir o autor para saber quando chegar a parte 2. </h3><p></p><p><strong>Referências<strong>:</strong></strong></p><p><strong><a href="https://docs.github.com/pt/get-started/importing-your-projects-to-github/importing-source-code-to-github/adding-locally-hosted-code-to-github">Adicionando o código localmente hospedado no GitHub - documentação do usuário</a></strong><br><a href="https://blog.github.com/2015-06-08-how-to-undo-almost-anything-with-git/" rel="noopener"><strong><strong>How to undo (almost) anything with Git</strong></strong></a><strong> </strong> (texto em inglês)<br><a href="https://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html" rel="noopener"><strong><strong>Git on the commandline - Don't be afraid to commit 0.3 documentation</strong></strong></a><strong> </strong>(texto em inglês)<br><a href="https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html" rel="noopener"><strong><strong>Start using Git on the command line | GitLab</strong></strong></a><strong> </strong> (texto em inglês)<br><a href="https://stackoverflow.com/questions/292357/what-is-the-difference-between-git-pull-and-git-fetch" rel="noopener"><strong><strong>What is the difference between 'git pull' and 'git fetch'?</strong></strong></a><strong> </strong> (texto em inglês)</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Aqui estão todos os comandos do Git que usei na semana passada e o que eles fazem ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Sam Corcos Como a maioria dos novatos, comecei procurando no StackOverflow por comandos do Git, copiando e colando as respostas, sem realmente entender o que eles faziam.  Crédito pela imagem: XKCD [https://xkcd.com/1597/] - Tradução: Thiago Costa BarbosaLembro-me de pensar, "Não seria ótimo se houvesse uma lista dos ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/aqui-estao-todos-os-comandos-do-git-que-usei-na-semana-passada-e-o-que-eles-fazem/</link>
                <guid isPermaLink="false">62044ce1cfef2204db7ed514</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Thiago Costa Barbosa ]]>
                </dc:creator>
                <pubDate>Mon, 16 May 2022 02:20:25 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/05/1_frC0VgM2etsVCJzJrNMZTQ.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/git-cheat-sheet-and-best-practices-c6ce5321f52/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Here are all the Git commands I used last week, and what they do.</a>
      </p><p>Escrito por: Sam Corcos</p><p>Como a maioria dos novatos, comecei procurando no StackOverflow por comandos do Git, copiando e colando as respostas, sem realmente entender o que eles faziam. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/05/GIT--1--1.png" class="kg-image" alt="GIT--1--1" width="450" height="651" loading="lazy"><figcaption>Crédito pela imagem: <a href="https://xkcd.com/1597/" rel="noopener">XKCD</a> - Tradução: Thiago Costa Barbosa</figcaption></figure><p>Lembro-me de pensar,<em><em> </em></em>"Não seria ótimo se houvesse uma lista dos comandos mais comuns do Git com uma explicação de para que eles são usados?"</p><p>Bem, anos depois, aqui estou eu compilando esta lista e apresentando algumas práticas recomendadas que até mesmo desenvolvedores intermediários e avançados devem achar úteis.</p><p>Para manter as coisas práticas, estou baseando esta lista em comandos reais do Git que usei na semana passada.</p><p>A maioria dos desenvolvedores hoje em dia usa o Git e, muito provavelmente, o GitHub também. Porém, um desenvolvedor intermediário provavelmente usa apenas esses três comandos 99% das vezes:</p><pre><code>git add --all
git commit -am "&lt;mensagem&gt;"
git push origin master</code></pre><p>Isso é ótimo quando você está trabalhando em um time de uma pessoa só, em um hackathon ou em um aplicativo "descartável". Mas quando a estabilidade e a manutenção começam a ser prioridade, fazer commits organizados, seguir uma estratégia de ramificação e escrever mensagens consistentes de commit se tornam muito importantes.</p><p>Vou começar com a lista de comandos comumente usados ​​para tornar mais fácil aos iniciantes entender o que é possível com o Git e, só depois, passar para recursos mais avançados e melhores práticas.</p><h4 id="os-comandos-mais-usados"><strong>Os </strong>comandos mais usados </h4><p>Se você não inicializar o Git, não poderá executar os outros comandos do Git nesse repositório. Por isso, para inicializar o Git em um repositório (ou repo, para os mais chegados, hehe), basta digitar o seguinte comando:</p><pre><code>git init</code></pre><p>Se você estiver usando o GitHub e enviando (também chamado de <em>fazendo um push</em>) o código para um repositório do GitHub on-line, você está usando um repositório <strong><strong>remot</strong>o</strong>. O nome (também conhecido como alias) padrão para este repositório remoto é <strong><strong>origin</strong></strong>. Se, no entanto, você copiou esse projeto do Github, ele já tem um <strong><strong>origin</strong></strong>. Você pode ver a localização desse repositório usando o comando <strong><strong>git remote -v</strong></strong>, que exibe o URL do repositório remoto.</p><p>Se você inicializou seu próprio repo do Git e deseja vinculá-lo a um repo do GitHub, precisa primeiro criá-lo no GitHub, copiar o URL gerado e usar o comando <strong><strong>git remote add origin &lt;U</strong></strong>RL&gt;, com o URL do GitHub substituindo o "&lt;URL&gt;". A partir daí, você pode adicionar arquivos, fazer os commits das alterações, além de enviá-los com o push para o seu repositório remoto.</p><p>Este último comando é utilizado também quando você precisa alterar algo do repo remoto. Por exemplo, suponhamos que você copiou o repo de outra pessoa e deseja alterar a origem do repositório remoto dela para o da sua própria conta do GitHub. É o mesmo procedimento do <strong><strong>git remote add origin</strong></strong>, porém você altera o URL no <strong><strong>set-url</strong></strong> para mudar de repositório remoto original.</p><pre><code>git remote -v
git remote add origin &lt;url&gt;
git remote set-url origin &lt;url&gt;</code></pre><p>Só tenha em mente que o repositório remoto será vinculado à conta de onde você o clonou. Portanto, se você clonou esse repo de outra pessoa, não conseguirá fazer o push para o GitHub até alterar a <strong><strong>origin</strong></strong> usando o comando acima.</p><p>A maneira mais comum de clonar um repositório é usar <strong><strong>git clone,</strong></strong> seguido do URL do repositório.</p><pre><code>git clone &lt;url&gt;</code></pre><p>Após isso, logo você estará usando branches (ramificações). Se você não entende o que elas são, existem outros tutoriais muito mais aprofundados, e você deve lê-los antes de prosseguir (<a href="https://docs.github.com/pt/get-started/quickstart/github-flow">aqui</a> temos um, em inglês).</p><p>Se você quiser criar uma nova branch, você pode usar <strong><strong>git branch &lt;n</strong>ome</strong>&gt;, com <strong>&lt;nome&gt;</strong> representando o nome da branch, como, por exemplo, "master". Com o comando <strong><strong>git branch</strong></strong>, você lista todas as branches do repositório local. </p><p>Já o comando <strong><strong>git checkout &lt;na</strong>me</strong>&gt; alterna para outra branch existente. Você pode também usar o comando <strong><strong>git checkout &lt;na</strong>me</strong>&gt; para criar uma nova branch e imediatamente mudar para ela. A maioria das pessoas usa isso em vez de comandos separados de branch e checkout.</p><pre><code>git branch
git branch &lt;name&gt;
git checkout &lt;name&gt;
git checkout -b &lt;name&gt;</code></pre><p>Se você fez muitas mudanças em uma branch, que vamos chamar de "develop", e se quiser fazer o <em>merge</em> de seus arquivos da branch de volta ao <strong><strong>master</strong></strong>, você usa o comando <strong><strong>git merge &lt;bran</strong>ch</strong>&gt;. &nbsp;Você primeiro faz o <strong><strong>ch</strong>eckout</strong> para a branch master e, em seguida, executa <strong><strong>git merge d</strong>evelop</strong> para fazer o merge de develop na branch master .</p><pre><code>git merge &lt;branch&gt;</code></pre><p>Se você está trabalhando com muitas pessoas, e se estiver em uma posição onde o repo foi atualizado no GitHub, mas não mudou localmente, pode usar <strong><strong>git pull origin &lt;bran</strong>ch</strong>&gt; para receber as mudanças mais recentes &nbsp;da sua branch remota.</p><pre><code>git pull origin &lt;branch&gt;</code></pre><p>Se estiver curioso para ver quais arquivos foram alterados e quais o Git está monitorando, use <strong><strong>git status</strong></strong>. Já se quiser ver o quanto cada arquivo foi alterado, você pode usar o comando <strong><strong>git diff</strong></strong> para ver o número de linhas alteradas em cada arquivo.</p><pre><code>git status
git diff --stat</code></pre><h3 id="comandos-avan-ados-e-pr-ticas-recomendadas">Comandos avançados e práticas recomendadas</h3><p>Em pouco tempo, você chegará ao patamar em que desejará que seus commits tenham uma boa aparência e permaneçam consistentes. Você também poderá ter de mexer no seu histórico de commits para torná-los mais fáceis de compreender ou, ainda, reverter uma alteração acidental.</p><p>Para isso, você vai precisar usar o comando <strong>git log</strong>, que permite a você ver o histórico de commits.</p><p>Ah, e seus commits sempre virão com mensagens e um <strong>hash</strong>, que é uma série aleatória de números e letras. Um hash pode ser assim: <strong><strong>c3d882aa1aa4e3d5f18b3890132670fbeac912f7</strong></strong></p><pre><code>git log</code></pre><p>Vamos dizer que você subiu algo para o GitHub que quebrou seu aplicativo. Em vez de corrigi-lo e enviar algo novo, você prefere apenas voltar um commit e tentar novamente.</p><p>Se você quiser voltar no tempo e fazer o <strong>checkout </strong>do seu aplicativo de um commit anterior, você pode fazer isso diretamente usando o hash como o nome da branch. Isso separará seu aplicativo da versão atual (porque você está editando um registro histórico, em vez da versão atual).</p><pre><code>git checkout c3d88eaa1aa4e4d5f</code></pre><p>Então, se você fizer alterações no histórico da sua branch e quiser fazer o push novamente, terá que fazer um push forçado.</p><p><strong>Cuidado<strong>:</strong></strong> fazer o push com esse método forçado é perigoso e só deve ser feito se for absolutamente necessário. Ele substituirá o histórico do seu aplicativo e você perderá o que veio depois.</p><pre><code>git push -f origin master</code></pre><p>Às vezes, também não é prático manter tudo em um commit só. Talvez você queira salvar seu progresso antes de tentar algo potencialmente arriscado, ou talvez tenha cometido um erro e queira se poupar do constrangimento de ter um erro no seu histórico de versões. Para isso, temos o <strong>git rebase</strong>.</p><p>Digamos que você tenha 4 commits em seu histórico local (não enviado para o GitHub) nos quais você foi e voltou. Seus commits agora parecem desarrumados e indecisos. Você pode usar o rebase para combinar todos esses commits em um único commit conciso.</p><pre><code>git rebase -i HEAD~4</code></pre><p>O comando acima abrirá o editor de texto padrão do seu computador (a menos que você o tenha configurado para outro editor, provavelmente será para o Vim), com várias opções de como você pode alterar seus commits. Será algo como o código abaixo:</p><pre><code>pick 130deo9 oldest commit message
pick 4209fei second oldest commit message
pick 4390gne third oldest commit message
pick bmo0dne newest commit message</code></pre><p>Para combiná-los, precisamos alterar a opção “pick” para “fixup” para mesclar os commits e &nbsp;descartar as mensagens de commit. Note que no Vim, você pressiona "<strong>a</strong>" ou "<strong>i</strong>" para poder editar o texto, salvá-lo e sair, você precisa digitar a tecla <strong>Esc</strong> seguida de "<strong>shift + z + z</strong>". Não me pergunte o motivo, apenas é assim.</p><pre><code>pick 130deo9 mensagem de commit mais antiga
fixup 4209fei segunda mensagem de commit mais antiga
fixup 4390gne terceira mensagem de commit mais antiga
fixup bmo0dne mensagem de commit mais nova</code></pre><p>Isso mesclará todos os seus commits em um só commit com a mensagem "mensagem de commit mais antiga".</p><p>O próximo passo é renomear sua mensagem de commit. Mas isso é só questão de opinião, pois desde que você siga um padrão consistente, tudo o que você fizer está bem. Eu recomendo usar as regras e <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#-git-commit-guidelines" rel="noopener">diretrizes do Google feitas para o Angular.js</a> (texto em inglês).</p><p>Para mudar a mensagem do commit, use a flag <strong>amend</strong>.</p><pre><code>git commit --amend</code></pre><p>Isso também abrirá o Vim, e as regras de salvamento e edição de texto são as mesmas de cima. Como exemplo de uma boa mensagem de commit, abaixo vemos uma mensagem que segue as diretrizes citadas anteriormente:</p><pre><code>feat: add stripe checkout button to payments page

- add stripe checkout button
- write tests for checkout</code></pre><p>Uma vantagem de manter os <strong>tipos</strong> listados na diretriz é que isso facilita a gravação de logs de alterações. Também é possível incluir informações no <strong>rodapé </strong>(novamente, especificadas na diretriz) que referenciam os problemas.</p><p><strong><strong>Not</strong>a</strong>: você deve evitar fazer o rebase ou compactar seus commits se estiver colaborando em um projeto e tiver código enviado para o GitHub. Se você começar a alterar o histórico de versões debaixo do nariz das pessoas, pode acabar dificultando a vida de todos com bugs difíceis de rastrear.</p><p>Há um número quase infinito de comandos possíveis com o Git, mas esses comandos apresentados são provavelmente os únicos que você precisará saber para seus primeiros anos de programação.</p><p><em><em>Sam Corcos <em><em>é o principal desenvolvedor e cofundador do</em></em> <a href="http://sightlinemaps.com/" rel="noopener">Sightline Maps</a>, </em>um<em><em><em>a plataforma intuitiva para impressão 3D de mapas topográficos, </em></em></em>e também do<em> <a href="http://learnphoenix.io/" rel="noopener">LearnPhoenix.io</a>, </em></em>um site de tutoriais intermediários-avançados para a criação de aplicativos de produção escaláveis ​​com Phoenix e React.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
