<?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[ Erika Freitas - 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[ Erika Freitas - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 16 Jun 2026 21:16:06 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/author/erika/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Como injetar código em JavaScript para manipular sites automaticamente ]]>
                </title>
                <description>
                    <![CDATA[ Como desenvolvedores e usuários da internet, por vezes encontramos sites que exibem muitos pop-ups, desde solicitações de assinatura a paywalls, anúncios, notificações e assim por diante. Muitas vezes, usamos esse sites diariamente para inúmeras coisas e ver esses  pop-ups o tempo todo é cansativo!  Desenvolvedores podem contornar isso ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-injetar-codigo-em-javascript-para-manipular-sites-automaticamente/</link>
                <guid isPermaLink="false">63f9070dc24870050d79e4b0</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Erika Freitas ]]>
                </dc:creator>
                <pubDate>Mon, 29 May 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Untitled-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-inject-javascript-code-to-manipulate-websites-automatically/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Inject JavaScript Code to Manipulate Websites Automatically</a>
      </p><p>Como desenvolvedores e usuários da internet, por vezes encontramos sites que exibem muitos <em>pop-ups</em>, desde solicitações de assinatura a <em>paywalls</em>, anúncios, notificações e assim por diante.</p><p>Muitas vezes, usamos esse sites diariamente para inúmeras coisas e ver esses <em>pop-ups</em> o tempo todo é cansativo! </p><p>Desenvolvedores podem contornar isso acessando o console do navegador e achando seletores para manipular o <a href="https://pt.wikipedia.org/wiki/Modelo_de_Objeto_de_Documentos">modelo de objeto de documentos</a> (DOM) adicionando ou modificando o CSS ou o Java Script do site.</p><p>Agora, porém, graças ao Google Chrome e à sua loja de extensões, qualquer pessoa pode injetar código em qualquer site automaticamente. Vamos mostrar o passo a passo neste pequeno guia.</p><h3 id="1-instale-a-extens-o-para-injetar-o-c-digo"><strong><strong>1. </strong>Instale a extensão para injetar o código</strong></h3><p>O que mostro a seguir só se aplica se você usar o <a href="https://google.com/chrome" rel="noopener">Google Chrome</a>. Instale a extensão <a href="https://chrome.google.com/webstore/detail/custom-javascript-for-web/ddbjnfjiigjmcpcpkmhogomapikjbjdk">Custom JavaScript for websites 2</a>. Essa pequena extensão permite executar o JavaScript em qualquer site automaticamente e ela também salva o código para visitas futuras feitas através do seu navegador.</p><p>Primeiro, entre em um site que usa com frequência e que tenha um <em>pop-up </em>irritante. Neste tutorial, uso o site do The Washington Post:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_BUguCP1rb7S-lFwVvC_1fg.png" class="kg-image" alt="1_BUguCP1rb7S-lFwVvC_1fg" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_BUguCP1rb7S-lFwVvC_1fg.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/1_BUguCP1rb7S-lFwVvC_1fg.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/1_BUguCP1rb7S-lFwVvC_1fg.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_BUguCP1rb7S-lFwVvC_1fg.png 1920w" sizes="(min-width: 720px) 720px" width="1920" height="910" loading="lazy"><figcaption>Imagem mostrando o site do The Washington Post, com um artigo mencionando Andrew Yang, e também as ferramentas para desenvolvedor do Chrome.</figcaption></figure><h3 id="2-localize-os-elementos-do-dom-e-crie-o-c-digo-de-inje-o"><strong><strong>2. </strong>Localize os elementos do DOM e crie o código de injeção</strong></h3><p>Abra as ferramentas de desenvolvedor do Chrome pressionando a tecla F12. Em seguida, identifique o elemento que contenha o <em>pop-up</em>.</p><p>Neste exemplo, o elemento <code>iframe</code> com ID <code>wallIframe</code> contém o <em>pop-up</em> com um fundo translúcido por trás. </p><p>Agora, vamos usar um pequeno trecho de JavaScript para adicionar CSS personalizado e verificar se conseguimos esconder o <em>pop-up</em>. </p><pre><code class="language-javascript">/* Manipulação do DOM
* Se quiser atualizar/adicionar um estilo único ao atributo style do elemento do DOM, você pode usar a função abaixo.
* Ela injeta o javascript após o recarregamento da página.
*/

function setCssStyle(el, style, value) {
  var result = el.style.cssText.match(new RegExp("(?:[;\\s]|^)(" +
      style.replace("-", "\\-") + "\\s*:(.*?)(;|$))")),
    idx;
  if (result) {
    idx = result.index + result[0].indexOf(result[1]);
    el.style.cssText = el.style.cssText.substring(0, idx) +
      style + ": " + value + ";" +
      el.style.cssText.substring(idx + result[1].length);
  } else {
    el.style.cssText += " " + style + ": " + value + ";";
  }
}
var element = document.getElementById("wallIframe");
setCssStyle(element, "display","none !important");</code></pre><p>Como pode ver, no código acima, estamos destacando o elemento <code>wallIframe</code> e o escondendo ao adicionar um CSS em linha.</p><h3 id="3-teste-a-inje-o-do-c-digo"><strong><strong>3. </strong>Teste a injeção do código</strong></h3><p>Teste seu código no console das ferramentas de desenvolvedores do Chrome para ter certeza de que funciona.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_qwrHgqiwmZreTmdQFeKE2Q--1-.png" class="kg-image" alt="1_qwrHgqiwmZreTmdQFeKE2Q--1-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_qwrHgqiwmZreTmdQFeKE2Q--1-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/1_qwrHgqiwmZreTmdQFeKE2Q--1-.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/1_qwrHgqiwmZreTmdQFeKE2Q--1-.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_qwrHgqiwmZreTmdQFeKE2Q--1-.png 1920w" sizes="(min-width: 720px) 720px" width="1920" height="910" loading="lazy"><figcaption>Imagem mostrando o site do The Washington Post com um artigo mencionando Andrew Yang, e também as ferramentas para desenvolvedores do Chrome.</figcaption></figure><p>Como pode ver acima, o código funciona.</p><p>Agora, é a hora de adicioná-lo à extensão <a href="https://chrome.google.com/webstore/detail/custom-javascript-for-web/ddbjnfjiigjmcpcpkmhogomapikjbjdk">Custom JavaScript for websites 2</a> e testar se o código funcionará em visitas futuras. Para isso, clique com o botão esquerdo no ícone da extensão na barra de endereço, adicione o trecho de código e clique em salvar.</p><p>A página recarregará automaticamente para executar e testar o código que você adicionou.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_SoyzA-pNiOQhmGf-7XZ33A.png" class="kg-image" alt="1_SoyzA-pNiOQhmGf-7XZ33A" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_SoyzA-pNiOQhmGf-7XZ33A.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/1_SoyzA-pNiOQhmGf-7XZ33A.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/1_SoyzA-pNiOQhmGf-7XZ33A.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_SoyzA-pNiOQhmGf-7XZ33A.png 1920w" sizes="(min-width: 720px) 720px" width="1920" height="910" loading="lazy"><figcaption>Imagem mostrando o site do The Washington Post com um artigo mencionando Andrew Yang, e também as ferramentas para desenvolvedores do Chrome.</figcaption></figure><h2 id="4-a-inje-o-do-c-digo-n-o-funcionou-e-agora"><strong><strong>4. </strong>A injeção do código não funcionou, e agora?</strong></h2><p>Depois de testar, o <em>iframe </em>não desapareceu como havia acontecido quando testamos no console. Um dos motivos poder ser o <em>iframe </em>carregar alguns segundos depois da página.</p><p>Poderíamos investigar no histórico de log da rede pra saber se é isso que acontece. Para evitar perda de tempo, porém, vamos adicionar uma função de <em>timeout </em>ao trecho de código original pra ver se funciona.</p><pre><code class="language-javascript">setTimeout(
     function() {
       function setCssStyle(el, style, value) {
         var result = el.style.cssText.match(new RegExp("(?:[;\\s]|^)(" +
             style.replace("-", "\\-") + "\\s*:(.*?)(;|$))")),
           idx;
         if (result) {
           idx = result.index + result[0].indexOf(result[1]);
           el.style.cssText = el.style.cssText.substring(0, idx) +
             style + ": " + value + ";" +
             el.style.cssText.substring(idx + result[1].length);
         } else {
           el.style.cssText += " " + style + ": " + value + ";";
         }
       }
       
       var element = document.getElementById("wallIframe");
       setCssStyle(element, "display", "none !important");
     }, 10000);</code></pre><p>Agora, o código espera 10 segundos antes de executar e aí está: funciona perfeitamente!</p><p>Você pode adicionar, também, um <em>event listener </em>para esperar o carregamento total da página.</p><h3 id="5-considera-es-finais"><strong><strong>5. </strong>Considerações finais</strong></h3><p>Por exemplo:</p><pre><code class="language-javascript">document.addEventListener("DOMContentLoaded", function() { 
    // Sua função vai aqui
}</code></pre><p>Se, contudo, adicionarmos o código da <em>pop-up </em>para executar depois de X segundos, o código acima não funcionará. Assim, é melhor continuar com a função de <em>timeout</em>.</p><p>Você pode usar a extensão para adicionar inúmeros outros trechos de código legais, como bloquear <em>ads </em>e <em>pop-ups</em>, aumentar a fonte padrão, responsividade e atualizar a aparência de uma site e muito mais. A partir do momento que os trechos de código de JavaScript são adicionados, eles executarão automaticamente em visitas futuras a esses sites.</p><blockquote><em>Um agradecimento especial a <em>Abbey Rennemeyer </em>do <em>freeCodeCamp </em>pelo <em>feedback </em>editorial na preparação deste artigo.</em></blockquote><p><strong>[RESSALVA IMPORTANTE]<strong>:</strong></strong> as opiniões expressadas neste artigo são do próprio autor e não representam as opiniões da Carnegie Mellon University, nem de outras empresas associadas (direta ou indiretamente) ao autor. &nbsp;O que foi escrito não tem a intenção de ser um produto final, mas um reflexo do pensamento atual e um catalizador para discussões e melhorias futuras.</p><p>Onde encontrar encontrar o autor: <a href="https://www.robertoiriondo.com/" rel="noopener nofollow">site pessoal</a>, <a href="https://medium.com/@robiriondo" rel="noopener">Medium</a>, <a href="https://www.instagram.com/robiriondo/hl=en">Instagram</a>, <a href="https://twitter.com/robiriondo?lang=en">Twitter</a>, <a href="https://www.facebook.com/robiriondo/">Facebook</a>, <a href="https://www.linkedin.com/in/robiriondo" rel="noopener nofollow">LinkedIn</a> ou através da <a href="https://www.daibuilds.com/seo-services/">empresa de serviços de SEO</a> do autor.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Os 8 melhores sites de desafios de código para ajudar a aperfeiçoar suas habilidades ]]>
                </title>
                <description>
                    <![CDATA[ Apesar da menor taxa de desemprego em décadas, analistas estimaram [https://www.techrepublic.com/article/tech-jobs-will-see-steady-growth-through-2023/]  que contratações no setor de tecnologia continuem crescendo de maneira estável durante a década de 2020 a 2030. Essa é uma ótima notícia para recém-formados em ciência da computação e desenvolvedores que atualmente trabalham na área, mas não ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/os-8-melhores-sites-de-desafios-de-codigo-para-ajudar-a-aperfeicoar-suas-habilidades/</link>
                <guid isPermaLink="false">63679e0d7e77d305f28da261</guid>
                
                    <category>
                        <![CDATA[ Tecnologia ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Erika Freitas ]]>
                </dc:creator>
                <pubDate>Sun, 09 Apr 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/codingchallenge2020.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/the-8-most-popular-coding-challenge-websites-of-2020/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The 8 Best Coding Challenge Websites to Help You Level Up Your Skills in 2020</a>
      </p><p>Apesar da menor taxa de desemprego em décadas, <a href="https://www.techrepublic.com/article/tech-jobs-will-see-steady-growth-through-2023/" rel="noopener nofollow">analistas estimaram</a> que contratações no setor de tecnologia continuem crescendo de maneira estável durante a década de 2020 a 2030.</p><p>Essa é uma ótima notícia para recém-formados em ciência da computação e desenvolvedores que atualmente trabalham na área, mas não significa que engenheiros ambiciosos podem ser complacentes. </p><p>Embora haja, provavelmente, oportunidades de crescimento no mercado em geral, ainda há mudanças significativas acontecendo o tempo todo e um senso de urgência para acompanhar as últimas tendências.</p><p>Hoje, existem mais tipos de funções técnicas do que nunca e uma contínua proliferação de novas linguagens, &nbsp;<em>frameworks</em> e tecnologias. Colaboradores de áreas técnicas que desejam estar à frente devem testar e refinar constantemente suas habilidades.</p><p>Para isso, reuni a lista de plataformas abaixo nas quais você pode aprimorar suas habilidades para várias funções, da ciência de dados ao <em>devops</em>.</p><h1 id="1-freecodecamp"><strong><strong><strong><strong>1. freeCodeCamp</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://www.freecodecamp.org/portuguese/learn">Site</a> | <a href="https://forum.freecodecamp.org/c/portugues/534">Fórum</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/freecodecamp-hero.png" class="kg-image" alt="freecodecamp-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/freecodecamp-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/freecodecamp-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/freecodecamp-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/freecodecamp-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="713" loading="lazy"></figure><p>Vamos começar com o freeCodeCamp, que é um ótimo site para quem está iniciando em programação. Ele oferece diversos recursos para aprender sintaxe, praticar código, criar projetos e se preparar para entrevistas.</p><p>Eles não têm tantos desafios interativos de código quanto outros sites, mas oferecem alguns <a href="https://www.freecodecamp.org/portuguese/learn/">desafios</a> divertidos e preparação para entrevistas para os iniciantes em JavaScript.</p><h3 id="-timo-para"><strong>Ótimo para</strong></h3><p>Iniciantes que estão aprendendo a programar pela primeira vez. É um ótimo lugar para se aprender HTML, CSS e JavaScript de uma modo divertido e interativo.</p><h3 id="pre-o-conte-do-premium"><strong>Preço<strong>/</strong>Conteúdo <em>p<strong>remium </strong></em></strong></h3><p>O freeCodeCamp é totalmente gratuito.</p><h1 id="2-coderbyte"><strong><strong><strong><strong>2. Coderbyte</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://coderbyte.com/" rel="noopener nofollow">Website</a>| <a href="https://medium.com/coderbyte" rel="noopener">Blog</a> | <a href="https://dev.to/coderbyte" rel="noopener nofollow">Dev.to</a> | <a href="https://coderbyte.com/challenges" rel="noopener nofollow">Desafios gratuitos</a> | <a href="https://coderbyte.com/member" rel="noopener nofollow">Premium</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/coderbyte-hero.png" class="kg-image" alt="coderbyte-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/coderbyte-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/coderbyte-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/coderbyte-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/coderbyte-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1111" loading="lazy"></figure><p>Minha plataforma, a Coderbyte, oferece mais de 300 desafios de código para você resolver em um editor on-line, utilizando 10 linguagens de programação diferentes. Você pode acessar soluções oficiais, mais de 1,5 milhões de soluções de usuários e ler artigos sobre como resolver os desafios de maneira eficiente.</p><p>A Coderbyte é recomendada pelos principais <a href="https://getcoding.hackreactor.com/coderbyte/" rel="noopener nofollow">bootcamps de código</a> (em inglês) e empresas, por ter uma coleção de desafios preparatórios para entrevistas.</p><h3 id="-timo-para-1"><strong>Ótimo para</strong></h3><p>A Coderbyte é perfeita para pessoas que estão entre as fases iniciais e intermediárias de suas carreiras e se preparando para entrevistas. Contém, também, uma biblioteca de desafios mais difíceis para aqueles que gostam de resolver desafios de código por diversão, mas esse não é um site voltado para programadores competitivos. </p><h3 id="pre-o-conte-do-premium-1"><strong>Preço<strong>/</strong>Conteúdo <em>p<strong>remium</strong></em></strong></h3><p>Há diversos de desafios gratuitos na Coderbyte, centenas de desafios premium e mais de 1 milhão de soluções de usuário disponíveis para <a href="https://coderbyte.com/member" rel="noopener nofollow">membros</a>.</p><h1 id="3-leetcode"><strong><strong><strong><strong>3. LeetCode</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://leetcode.com/" rel="noopener nofollow">Site</a> | <a href="https://leetcode.com/discuss/interview-question?currentPage=1&amp;orderBy=hot&amp;query=" rel="noopener nofollow">Discussão</a> | <a href="https://leetcode.com/problemset/all/" rel="noopener nofollow">Desafios gratuitos</a> | <a href="https://leetcode.com/subscribe/" rel="noopener nofollow">Premium</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/leetcode-hero.png" class="kg-image" alt="leetcode-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/leetcode-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/leetcode-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/leetcode-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/leetcode-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1119" loading="lazy"></figure><p>A LeetCode tem, atualmente, uma das melhores coleções de desafios de código on-line. Os tópicos que abordam exigem conhecimento de estrutura de dados como árvores binárias, <em>heaps</em>, &nbsp;listas encadeadas, entre outros. Por isso, seus desafios são um pouco mais avançados do que os de outros sites. Eles, porém, são ótimos desafios, se usados como preparação para entrevistas de engenharia de software.</p><p>Eles também têm uma seção de <a href="https://leetcode.com/interview/" rel="noopener nofollow">entrevista simulada</a> que é especifica para preparação para entrevistas de emprego. Eles também organizam seu próprio <a href="https://leetcode.com/contest/" rel="noopener nofollow">concurso de código</a> e possuem um ótimo <a href="https://leetcode.com/discuss/interview-question?currentPage=1&amp;orderBy=hot&amp;query=" rel="noopener nofollow">fórum de discussão</a> onde as pessoas falam sobre perguntas feitas em entrevistas, empregos, remuneração e outros tópicos relacionados à engenharia. </p><h3 id="-timo-para-2"><strong>Ótimo para</strong></h3><p>A LeetCode é ótima para programadores intermediários a avançados. Talvez não seja adequada para iniciantes que ainda não sabem como escrever loops básicos, mas, após aprender os fundamentos, é um ótimo site para se praticar programação.</p><h3 id="pre-o-conte-do-premium-2"><strong>Preço<strong>/</strong>Conteúdo <em>p<strong>remium</strong></em></strong></h3><p>Existem desafios gratuitos disponíveis na LeetCode e, também, uma assinatura <a href="https://leetcode.com/subscribe/" rel="noopener nofollow">premium</a>, que dá acesso a mais desafios e outros recursos da plataforma.</p><h1 id="4-edabit"><strong><strong><strong><strong>4. Edabit</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://edabit.com/" rel="noopener nofollow">Site</a> | <a href="https://dev.to/edabit" rel="noopener nofollow">Blog</a> | <a href="https://edabit.com/challenges" rel="noopener nofollow">Desafios</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/edabit-hero.png" class="kg-image" alt="edabit-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/edabit-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/edabit-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/edabit-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/edabit-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="975" loading="lazy"></figure><p>Essa é a primeira vez que o Edabit aparece na nossa lista! Ele cresceu em popularidade em anos passados e os desenvolvedores parecem realmente gostar dos desafios. Oferece uma grande coleção, com mais de 4 mil desafios, que podem ser solucionados on-line em diversas linguagens.</p><p>Atualmente, o site oferece apenas desafios com interação de código on-line — não há fóruns de discussão, artigos, soluções de usuários ou entrevistas simuladas como em outros sites — mas, com o tempo, eles podem adicionar algumas dessas opções.</p><h3 id="-timo-para-3"><strong>Ótimo para</strong></h3><p>O Edabit é ótimo para iniciantes que buscam praticar suas habilidades diariamente resolvendo pequenos desafios. Depois de atingir o nível intermediário, outros sites oferecem desafios mais difíceis e mais conteúdos voltados para programação competitiva e entrevistas de emprego.</p><h3 id="pre-o-conte-do-premium-3"><strong>Preço<strong>/</strong>Conteúdo <em>p<strong>remium</strong></em></strong></h3><p>Todos os desafios no Edabit são gratuitos e não há opção premium.</p><h1 id="5-codewars"><strong><strong><strong><strong>5. Codewars</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://www.codewars.com/" rel="noopener nofollow">Site</a> | <a href="https://medium.com/@Codewars" rel="noopener">Blog</a> | <a href="https://www.codewars.com/kata/latest/my-languages" rel="noopener nofollow">Desafios gratuitos</a> | <a href="https://www.codewars.com/subscribe" rel="noopener nofollow">Premium</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/codewars-hero.png" class="kg-image" alt="codewars-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/codewars-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/codewars-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/codewars-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/codewars-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="978" loading="lazy"></figure><p>O Codewars oferece uma grande coleção de desafios de código enviados e editados por sua própria comunidade. Você pode solucionar os desafios on-line no editor do site usando mais de 20 linguagens de programação. Pode, também, visualizar a discussão de cada desafio, assim como as soluções dos usuários. Além disso, você pode ganhar pontos e subir no ranking resolvendo os desafios.</p><h3 id="-timo-para-4"><strong>Ótimo para</strong></h3><p>O Codewars é ótimo para pessoas nas fases iniciante e intermediária. Os desafios são criados pela comunidade então você verá diferentes tipos de desafios de código.</p><h3 id="pre-o-conte-do-premium-4"><strong>Preço<strong>/</strong>Conteúdo <em>p<strong>remium</strong></em></strong></h3><p>Eles oferecem todos os desafios criados pela comunidade de maneira gratuita e a assinatura <a href="https://www.codewars.com/subscribe" rel="noopener nofollow">premium</a> dá acesso a alguns recursos interessantes da plataforma.</p><h1 id="6-hackerrank"><strong><strong><strong><strong>6. HackerRank</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://www.hackerrank.com/" rel="noopener nofollow">Site</a> | <a href="https://blog.hackerrank.com/" rel="noopener nofollow">Blog</a> | <a href="https://www.hackerrank.com/dashboard" rel="noopener nofollow">Desafios</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/hackerrank-hero.png" class="kg-image" alt="hackerrank-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/hackerrank-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/hackerrank-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/hackerrank-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/hackerrank-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1059" loading="lazy"></figure><p>O HackerRank tem uma vasta coleção de desafios de código orientados para algoritmos e estrutura de dados, junto com material de preparação para entrevistas, um fórum de discussão para cada desafio e uma lista das principais soluções de usuário. Eles têm desafios para outros tópicos, como programação funcional, IA, Shell, SQL e muito mais.</p><h3 id="-timo-para-5"><strong>Ótimo para</strong></h3><p>O HackerRank é ótimo para programadores intermediários a avançados que já aprenderam o básico de uma linguagem e estão prontos para solucionar problemas mais complicados. Os desafios são escritos com notação matemática e, às vezes, podem ser um pouco confusos. Por essa razão, pode não ser bom para desenvolvedores iniciantes.</p><h3 id="pre-o-conte-do-premium-5"><strong>Preço<strong>/</strong>Conteúdo <em>p<strong>remium</strong></em></strong></h3><p>Todos os desafios no HackerRank são gratuitos e não há opção premium. </p><h1 id="7-topcoder"><strong><strong><strong><strong>7. TopCoder</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://www.topcoder.com/" rel="noopener nofollow">Site</a> | <a href="https://www.topcoder.com/blog/" rel="noopener nofollow">Blog</a> | <a href="https://www.topcoder.com/challenges" rel="noopener nofollow">Desafios</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/topcoder-hero.png" class="kg-image" alt="topcoder-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/topcoder-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/topcoder-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/topcoder-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/topcoder-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="754" loading="lazy"></figure><p>A TopCoder é uma das plataformas originais de programação competitiva on-line. Fornece uma lista de <a href="https://www.topcoder.com/challenges" rel="noopener nofollow">desafios</a> de algoritmos de competições passadas, que você pode completar on-line por conta própria usando o editor de código do site. </p><p>Suas <em>Single Round Matches</em> (ou em português, "partidas de rodada única") são oferecidas algumas vezes por mês em um horário específico, onde você compete contra outras pessoas para solucionar os desafios. Aqui estão alguns <a href="https://www.topcoder.com/community/competitive-programming/tutorials/" rel="noopener nofollow">tópicos</a> que seus desafios podem abordar. </p><p>Além de resolver desafios on-line por diversão, eles oferecem competições <a href="https://www.topcoder.com/challenges/30111105" rel="noopener nofollow">patrocinadas</a>, onde você pode ganhar prêmios por escrever a melhor solução.</p><h3 id="-timo-para-6"><strong>Ótimo para</strong></h3><p>A TopCoder é mais indicada para programadores avançados, que estão confortáveis com a resolução de desafios algorítmicos que lidam com tópicos avançados, como busca de grafos e a teoria dos números.</p><h3 id="pre-o-conte-do-premium-6"><strong>Preço<strong>/</strong>Conteúdo <em>p<strong>remium</strong></em></strong></h3><p>Todos os desafios na TopCoder são gratuitos e não há opção premium. </p><h1 id="8-codeforces"><strong><strong><strong><strong>8. Codeforces</strong></strong></strong></strong></h1><p>Links úteis: <a href="https://codeforces.com/" rel="noopener nofollow">Site</a> | <a href="https://codeforces.com/groups" rel="noopener nofollow">Grupos de discussão</a> | <a href="https://codeforces.com/problemset" rel="noopener nofollow">Desafios</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/codeforces-hero.png" class="kg-image" alt="codeforces-hero" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/codeforces-hero.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/codeforces-hero.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/codeforces-hero.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/codeforces-hero.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1072" loading="lazy"></figure><p>A Codeforces é, hoje, um dos principais sites de programação competitiva (há alguns anos, a TopCoder era onde a maioria dos programadores competitivos passavam o tempo). </p><p>Existem alguns <a href="https://codeforces.com/problemset" rel="noopener nofollow">problemas</a> que você pode solucionar como prática, mas não há um editor on-line. Em vez disso, você escreve sua solução em seu próprio editor e, depois, faz o <em>upload</em> para o sistema deles, onde eles testarão o seu código em um conjunto de casos de testes. </p><p>Eles também costumam realizar <a href="https://codeforces.com/contests" rel="noopener nofollow">concursos</a>, nos quais participam os melhores programadores competitivos.</p><h3 id="-timo-para-7"><strong>Ótimo para</strong></h3><p>Programadores avançados e competitivos que realmente gostam de resolver desafios difíceis de algoritmos.</p><h3 id="pre-o-conte-do-premium-7"><strong>Preço<strong> / </strong>Conteúdo <em>p<strong>remium</strong></em></strong></h3><p>Todos os desafios na Codeforces são gratuitos e não há opção premium.</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>
        
    </channel>
</rss>
