<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lays Hidani</title>
    <description>The latest articles on DEV Community by Lays Hidani (@layshidani).</description>
    <link>https://dev.to/layshidani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F437437%2F8ddfdd15-2cf9-4289-9864-92efeccbc3ba.jpeg</url>
      <title>DEV Community: Lays Hidani</title>
      <link>https://dev.to/layshidani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/layshidani"/>
    <language>en</language>
    <item>
      <title>👾 Games para treinar suas skills front-end</title>
      <dc:creator>Lays Hidani</dc:creator>
      <pubDate>Sun, 02 Jan 2022 20:30:44 +0000</pubDate>
      <link>https://dev.to/layshidani/games-para-treinar-suas-skills-front-end-3mnj</link>
      <guid>https://dev.to/layshidani/games-para-treinar-suas-skills-front-end-3mnj</guid>
      <description>&lt;p&gt;&lt;em&gt;*Jogos em inglês.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  HTML
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Super markup world&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pixel e Pixella vivem no Super Markup World que foi criado pelo grande arquiteto Markup Polo.&lt;br&gt;
Em um lindo dia de sol, quando Pixel e Pixella visitaram a região montanhosa de Divland ...&lt;br&gt;
... o arquiteto malvado Mosiac destruiu todas as montanhas!&lt;br&gt;
Pixella de alguma forma evitou o desastre usando uma tag de hiperlink.&lt;br&gt;
Mas agora Pixel e Pixella estão separados!&lt;br&gt;
Cabe a você, Pixel, encontrar Pixella e salvar Divland.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk7pwf93m3b2bailk5ysj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk7pwf93m3b2bailk5ysj.png" alt="Super markup world"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://supermarkupworld.com/" rel="noopener noreferrer"&gt;🕹 Jogar Super Markup World&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  CSS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CSS Diner (seletores)&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;É um jogo divertido para aprender e praticar seletores CSS.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqcgehj54mta06t21rrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqcgehj54mta06t21rrv.png" alt="CSS Diner"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flukeout.github.io/" rel="noopener noreferrer"&gt;🕹 Jogar CSS Diner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Flexbox Froggy (flexbox)&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Um jogo onde você ajuda Froggy e seus amigos escrevendo código CSS!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gobmmgrhozqd2ubqj1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gobmmgrhozqd2ubqj1n.png" alt="Flexbox Froggy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flexboxfroggy.com/" rel="noopener noreferrer"&gt;🕹 Jogar Flexbox Froggy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Flexbox Defense&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Seu trabalho é impedir que os inimigos que se aproximam ultrapassem suas defesas. Ao contrário de outros jogos de defesa de torre, você deve posicionar suas torres usando CSS!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fberi095clnsxi9icxef5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fberi095clnsxi9icxef5.png" alt="Flexbox Defense"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flexboxdefense.com/" rel="noopener noreferrer"&gt;🕹 Jogar Flexbox Defense&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Grid Garden&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bem-vindo ao Grid Garden, onde você escreve código CSS para cultivar seu jardim de cenouras!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3ls1jt8lh0yxy5usrli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3ls1jt8lh0yxy5usrli.png" alt="Grid Garden"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cssgridgarden.com/" rel="noopener noreferrer"&gt;🕹 Jogar Grid Garden&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;HEX Code (RGB)&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O mundo precisa da sua habilidade de conhecimento de hex code para evitar uma invasão!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiiazdqvhcgj0fiirdswv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiiazdqvhcgj0fiirdswv.png" alt="HEX Code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.hexinvaders.com/" rel="noopener noreferrer"&gt;🕹 Jogar Hex Invaders&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  Javascript
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Elevator Saga&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sua tarefa é programar o movimento dos elevadores, escrevendo um programa em JavaScript.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzpt9ntk18ksor4gg6bta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzpt9ntk18ksor4gg6bta.png" alt="Elevator Saga"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://play.elevatorsaga.com/" rel="noopener noreferrer"&gt;🕹 Jogar Elevator Saga - the elevator programming game&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Untrusted —or— the Continuing Adventures of Dr. Eval&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O jogo apresenta um ambiente de jogo semelhante ao de um roguelike e uma janela de console com o código JavaScript gerando cada nível. Quando carregado, cada nível é imbatível e a maior parte do JavaScript não pode ser editada. O desafio é abrir um caminho para o próximo nível usando apenas as ferramentas limitadas deixadas abertas para você.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ylehn1te4balpq8eii5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ylehn1te4balpq8eii5.png" alt="Untrusted"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://alexnisnevich.github.io/untrusted/" rel="noopener noreferrer"&gt;🕹 Jogar Untrusted - a user javascript adventure game&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  Typescript
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;js.CheckiO&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Desafios em TypeScript e exercícios com soluções para iniciantes e avançados.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6plpboxxwt0gb2nmnj4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6plpboxxwt0gb2nmnj4i.png" alt="js.CheckiO"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://js.checkio.org/" rel="noopener noreferrer"&gt;🕹 Jogar js.CheckiO&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  Regex
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Regex Crossword é um jogo semelhante ao sudoku ou o quebra-cabeça de palavras cruzadas tradicional, onde você deve adivinhar as letras corretas nas linhas horizontais e verticais de uma grade.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw17sn90si2t1vec1ok1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw17sn90si2t1vec1ok1z.png" alt="Regex Crossword"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://regexcrossword.com/" rel="noopener noreferrer"&gt;🕹 Jogar Regex Crossword&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  Web Development
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Ao longo dos cantos escuros da web, as portas estão sempre se abrindo para novos desafios que irão testar a coragem até mesmo do desenvolvedor mais robusto. Deixe que esses poços de água forneçam uma breve pausa e uma oportunidade para você e outros heróis se unirem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsaktsal75w0saomkbj1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsaktsal75w0saomkbj1j.png" alt="Dungeons &amp;amp; Developers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.dungeonsanddevelopers.com/" rel="noopener noreferrer"&gt;🕹 Jogar Dungeons &amp;amp; Developers&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  Design
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can't Unsee&lt;/strong&gt;&lt;br&gt;
Veja se suas habilidades de design estão afiadas, escolhendo entre o mais correto&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf4jx0un6xvszyxqxqqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf4jx0un6xvszyxqxqqy.png" alt="Can't Unsee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cantunsee.space/" rel="noopener noreferrer"&gt;🕹 Jogar Can't Unsee&lt;/a&gt;&lt;/p&gt;



&lt;h2&gt;
  
  
  Vim
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;VIM Adventures&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Aprenda VIM enquanto joga!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2cgolia22rqldf5ywh0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2cgolia22rqldf5ywh0.png" alt="VIM Adventures"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vim-adventures.com/" rel="noopener noreferrer"&gt;🕹 Jogar VIM Adventures&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Cover Photo by Boukaih on Unsplash&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>beginners</category>
      <category>game</category>
    </item>
    <item>
      <title>🆘 Git tips - comandos úteis para sobreviver no dia a dia</title>
      <dc:creator>Lays Hidani</dc:creator>
      <pubDate>Fri, 03 Sep 2021 20:38:46 +0000</pubDate>
      <link>https://dev.to/layshidani/git-tips-comandos-uteis-para-sobreviver-no-dia-a-dia-1poo</link>
      <guid>https://dev.to/layshidani/git-tips-comandos-uteis-para-sobreviver-no-dia-a-dia-1poo</guid>
      <description>&lt;p&gt;O versionamento de código ajuda muito nossa vida como desenvolvedores. Porém muitas vezes nos deparamos com algumas situações difíceis com o git no dia a dia...&lt;/p&gt;

&lt;p&gt;Eu gosto de ir tomando notas sobre minhas descobertas conforme vou aprendendo e sobrevivendo para relembrar e consultar sempre que necessário.&lt;/p&gt;

&lt;p&gt;Separei uma lista de comandos úteis (um pouco além dos mais básicos, e aqueles que geralmente a gente esquece), espero que te ajudem também 😉&lt;/p&gt;

&lt;p&gt;Vamos lá...&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Substituir comando entre &amp;lt;&amp;gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  # URL
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Verificar qual a URL remota
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Editar url remota
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote set-url origin &amp;lt;https://github.com/USERNAME/REPOSITORY.git&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Stash
&lt;/h1&gt;

&lt;p&gt;📖 Opções de Git stash (ver &lt;a href="https://www.atlassian.com/git/tutorials/saving-changes/git-stash" rel="noopener noreferrer"&gt;Atlassian&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;O comando git stash é utilizado para armazenar temporariamente as alterações que você fez, para poder trabalhar em outra coisa e depois voltar e reaplicá-las posteriormente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6ovla8ny9rdct0b52mq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6ovla8ny9rdct0b52mq.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Fonte da imagem: Atlasian&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Stash &lt;strong&gt;tracked files&lt;/strong&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Stash também dos &lt;strong&gt;untracked files&lt;/strong&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash &lt;span class="nt"&gt;-u&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;onde &lt;code&gt;-u = --include-untracked&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Stash de todos os arquivos, incluindo os &lt;strong&gt;ignored files&lt;/strong&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;onde &lt;code&gt;-a = --all&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Stash com descrição
&lt;/h2&gt;

&lt;p&gt;É possível adicionar mensagens/descrições aos &lt;em&gt;stashs&lt;/em&gt;, assim como fazemos com os commits:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash save &amp;lt;&lt;span class="s2"&gt;"message"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar stashs
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deletar &lt;em&gt;stash&lt;/em&gt; específica
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash drop stash@&lt;span class="o"&gt;{&lt;/span&gt;&amp;lt;index&amp;gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deletar todas &lt;em&gt;stash&lt;/em&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash clear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reaplicando alterações que estão em &lt;em&gt;stash&lt;/em&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Padrão, último &lt;em&gt;stash&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Escolher qual &lt;em&gt;stash&lt;/em&gt; (como em um array, utilize o &lt;code&gt;git stash list&lt;/code&gt; para visualizar a lista de &lt;em&gt;stashs&lt;/em&gt;):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash pop stash@&lt;span class="o"&gt;{&lt;/span&gt;&amp;lt;index&amp;gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Visualizar Stash diff (stash show)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash show
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  # ou, para visualização completa (-p = --patch):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash show &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Criar branch a partir de &lt;em&gt;stash&lt;/em&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash branch &amp;lt;branch-name&amp;gt; stash@&lt;span class="o"&gt;{&lt;/span&gt;&amp;lt;index&amp;gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  # Cherry Pick
&lt;/h1&gt;

&lt;p&gt;O cherry-pick é um comando para 'Pegar' um commit de uma branch através do hash do commit e aplicá-lo em outra.&lt;/p&gt;

&lt;p&gt;Ex: commitei acidentalmente em outra branch, e desejo trazer o commit para minha branch certa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick 1 commit
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pick vários commits
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;hash1&amp;gt; &amp;lt;hash2&amp;gt; &amp;lt;hash3&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pick de um commit até outro commit
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;hash1...hash3&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  # Branchs
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Listar Branchs
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar branchs matching
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;--list&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;termo&amp;gt;*'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;exemplo, listar branchs, cujos nomes começam com &lt;strong&gt;fix/:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;--list&lt;/span&gt; &lt;span class="s1"&gt;'fix/*'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Renomear branch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Local, e se você está nessa branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt;new-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Local, e se você NÃO está nessa branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt;old-name&amp;gt; &amp;lt;new-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remota, seguir os passos adicionais
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin :&amp;lt;old-name&amp;gt; &amp;lt;new-name&amp;gt;

&lt;span class="c"&gt;# ou&lt;/span&gt;

git push origin &lt;span class="nt"&gt;--delete&lt;/span&gt; &amp;lt;old-name&amp;gt;
git push origin &amp;lt;new-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resetar a branch &lt;em&gt;upstream&lt;/em&gt; para o novo nome da branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;-u&lt;/span&gt; &amp;lt;new-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Remover tag de uma branch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Remover tag, branch remota
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin :refs/tags/&amp;lt;tag-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remover tag, branch local
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-d&lt;/span&gt; &amp;lt;tag-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Mudar para branch anterior [atalho]
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  # Commits
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Alterar (Reescrever) mensagem do último commit
&lt;/h2&gt;

&lt;p&gt;para renomear o commit, caso este seja seu último commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;nova mensagem de commit&amp;gt;'&lt;/span&gt; &lt;span class="nt"&gt;--amend&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;caso já tenha subido este último commit para a branch remota, será necessário fazer um push force pois estaremos sobreescrevendo a história&lt;/li&gt;
&lt;li&gt;caso não seja o ultimo commit, será necessário renomear através de rebase interativo ou reset —soft&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Refazer o último commit (add arquivos ao último commit)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Refazer o último commit utilizando a mensagem do commit anterior
&lt;/h3&gt;

&lt;p&gt;Considere ter esquecido alguma alteração em um arquivo após ter commitado. Você pode utilizar o &lt;code&gt;amend&lt;/code&gt; para commitar de novo utilizando a mesma mensagem do último commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# primeiro add o arquivo (git add &amp;lt;arquivos&amp;gt;) e em seguida:&lt;/span&gt;

git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;--reuse-message&lt;/span&gt; HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou&lt;/p&gt;

&lt;h3&gt;
  
  
  Refazer o último commit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# primeiro add o arquivo (git add &amp;lt;arquivos&amp;gt;) e em seguida:&lt;/span&gt;

git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;--no-edit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Desfazer commits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;com &lt;strong&gt;soft&lt;/strong&gt;: apaga só os commits&lt;/li&gt;
&lt;li&gt;com &lt;strong&gt;hard&lt;/strong&gt;: apaga os commits e o código&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Desfazer o último commit
&lt;/h3&gt;

&lt;p&gt;mantendo as alterações do último commit&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD^ 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;deletando todas as alterações do último commit&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD^
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Desfazer commits por quantidade (do mais atual para o mais antigo)
&lt;/h3&gt;

&lt;p&gt;Desfaz apenas os commits e mantem as alterações&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~&amp;lt;quantidade de commits&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Desfaz os commits e o código&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~&amp;lt;quantidade de commits&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Desfazer commits até o commit x (com soft ou hard):
&lt;/h3&gt;

&lt;p&gt;Através de um &lt;code&gt;git log --oneline&lt;/code&gt;podemos verificar os commits, e obter a hash de referência.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~&amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;o comando acima irá desfazer todos os commits posteriores à hash especificada.&lt;/p&gt;




&lt;h1&gt;
  
  
  # Git log (lista de commits)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Listar commits resumido
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits gráfico branch
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--graph&lt;/span&gt; &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits com referências associadas (branch, tag, etc)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--decorate&lt;/span&gt;

&lt;span class="c"&gt;# ou&lt;/span&gt;

git log &lt;span class="nt"&gt;--oneline&lt;/span&gt; &lt;span class="nt"&gt;--decorate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits por quantidade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log -&amp;lt;quantidade&amp;gt;

&lt;span class="c"&gt;# ex: git log -5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits pesquisa → procurar commits com uma mensagem/palavra
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;-S&lt;/span&gt; &amp;lt;&lt;span class="s1"&gt;'string-to-search'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits pesquisa → procurar commits com uma mensagem/palavra do código
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;string-to-search&amp;gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits pesquisa → procurar commits com uma mensagem/palavra da mensagem de commit
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--grep&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;string-to-search&amp;gt;'&lt;/span&gt;

&lt;span class="c"&gt;# ex: git log --grep='fix'&lt;/span&gt;
&lt;span class="c"&gt;# ex: git log --grep='fix' --oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits pesquisa → procurar commits por arquivos
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;file1.extension&amp;gt; &amp;lt;file2.extension&amp;gt; &amp;lt;...n&amp;gt;

&lt;span class="c"&gt;# ex: git log -- foo.ts bar.ts&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits por data
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Depois de
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--after&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;date&amp;gt;'&lt;/span&gt;

&lt;span class="c"&gt;# ex: &lt;/span&gt;
&lt;span class="c"&gt;# git log --after='2014-7-1'&lt;/span&gt;
&lt;span class="c"&gt;# git log --after='yesterday'&lt;/span&gt;
&lt;span class="c"&gt;# git log --after='1 week ago'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Depois de
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--before&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;date&amp;gt;'&lt;/span&gt;

&lt;span class="c"&gt;# ex: &lt;/span&gt;
&lt;span class="c"&gt;# git log --before='2014-7-1'&lt;/span&gt;
&lt;span class="c"&gt;# git log --before='yesterday'&lt;/span&gt;
&lt;span class="c"&gt;# git log --before='1 week ago'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Entre datas
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--since&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;date&amp;gt;'&lt;/span&gt; &lt;span class="nt"&gt;--until&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;date&amp;gt;'&lt;/span&gt;

&lt;span class="c"&gt;# ex: git log --since='&amp;lt;JAN 01 2019&amp;gt;' --until='&amp;lt;DEC 25 2019&amp;gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar commits por autor
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 autor
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--author&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;name&amp;gt;'&lt;/span&gt;

&lt;span class="c"&gt;# ex: &lt;/span&gt;
&lt;span class="c"&gt;#  git log --author='Lays'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mais de 1 autor
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--author&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;name1&amp;gt;\|&amp;lt;name2&amp;gt;'&lt;/span&gt;

&lt;span class="c"&gt;# ex: &lt;/span&gt;
&lt;span class="c"&gt;#  git log --author='Lays\|Bruno'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Listar último commit
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;-1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  # Push
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Push force
&lt;/h2&gt;

&lt;p&gt;Caso a gente reescreva a história de algo que já está commitado na branch remota, como por exemplo um squash, renomear commit etc, será necessário fazer um &lt;code&gt;push force&lt;/code&gt; para forçar a atualização remota, já que ela irá recusar a atualização por &lt;code&gt;push&lt;/code&gt; normal. Ou seja o &lt;code&gt;push force&lt;/code&gt;, sobreescreve tudo o que está na branch remota pelo que está na branch local. Tome cuidado com esse comando, e nunca faça &lt;code&gt;push force&lt;/code&gt; das branchs principais.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push &lt;span class="nt"&gt;--force&lt;/span&gt;

&lt;span class="c"&gt;# ou&lt;/span&gt;

git push &lt;span class="nt"&gt;-f&lt;/span&gt;

&lt;span class="c"&gt;# ou &lt;/span&gt;

git push origin +HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Fazer push sem digitar o nome da branch em que você está (HEAD) [atalho]
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🆘 # Reflog - o Salva vidas
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Histórico - Listar tudo o que você fez no git
&lt;/h2&gt;

&lt;p&gt;Enquanto o &lt;code&gt;git log&lt;/code&gt; exibe apenas os commits, o &lt;code&gt;git reflog&lt;/code&gt; exibe todo o histórico, incluindo  commits, checkout, merge, rebase etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reflog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;a partir da lista/histórico conseguimos reverter algumas alterações indesejadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Algumas opções com git reflog
&lt;/h2&gt;

&lt;p&gt;Após executar o &lt;code&gt;git reflog&lt;/code&gt;, serão listadas todas as modificações. Procure o hash referente ao ponto que você gostaria de voltar no tempo. Algumas opções para trabalhar com o reflog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Reverter todas as alterações para o hash específico (deleta todas as alterações feitas):&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reverter somente um arquivo específico para o estado em que estava a partir de um hash:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;filename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fazer Cherry-pick a partir do hash:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  # Merge tips
&lt;/h1&gt;

&lt;h2&gt;
  
  
  sem fast-forward
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;merge&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ff&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;branch&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The --no-ff flag prevents git merge from executing a "fast-forward" if it detects that your current HEAD is an ancestor of the commit you're trying to merge. A fast-forward is when, instead of constructing a merge commit, git just moves your branch pointer to point at the incoming commit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;However, occasionally you want to prevent this behavior from happening, typically because you want to maintain a specific branch topology (e.g. you're merging in a topic branch and you want to ensure it looks that way when reading history). In order to do that, you can pass the --no-ff flag and git merge will always construct a merge instead of fast-forwarding.&lt;/p&gt;

&lt;p&gt;_&lt;a href="https://newbedev.com/what-is-the-difference-between-git-merge-and-git-merge-no-ff" rel="noopener noreferrer"&gt;https://newbedev.com/what-is-the-difference-between-git-merge-and-git-merge-no-ff&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvxf2ouab9sllgvv3y4o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvxf2ouab9sllgvv3y4o.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Fonte da imagem: NewBeDev&lt;/em&gt; &lt;/p&gt;
&lt;h1&gt;
  
  
  # Arquivos
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Renomear arquivo local
&lt;/h2&gt;
&lt;h2&gt;
  
  
  1ª opção: renomear pelo computador
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;renomeie normalmente o arquivo pela pasta.&lt;/li&gt;
&lt;li&gt;Faça &lt;code&gt;git add do arquivo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Assim ele irá passar para o estado de RENAMED quando você verificar pelo &lt;code&gt;git status&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Agora faça o commit do arquivo normalmente com &lt;code&gt;git commit&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  2ª opção: pelo Git
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;No terminal: &lt;code&gt;git mv nome_antigo.extensão novo_nome.extensão&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Assim ele irá passar para o estado de RENAMED quando você verificar pelo &lt;code&gt;git status&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Agora faça o commit do arquivo normalmente com &lt;code&gt;git commit&lt;/code&gt; para consolidar a mudança&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Unstage Files
&lt;/h2&gt;

&lt;p&gt;Se você deseja já fez &lt;code&gt;git add&lt;/code&gt; em um arquivo e ele está em STAGE pronto para ser commitado, mas deseja reverter (sem perder as alterações):&lt;/p&gt;

&lt;p&gt;Todos os arquivos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arquivo específico:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;nome-do-arquivo&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Desfazer alterações
&lt;/h2&gt;

&lt;p&gt;Supondo que você deseja desfazer alterações no arquivo (apagar alterações)… vai depender em que ponto ele está: untracked, modified, commited.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ao invés de desfazer, o mais aconselhado é reverter, para ao invés de apenas deletar a alteração, manter documentado. Ver reverter mais abaixo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Desfazer alterações: arquivo em :::untracked:::
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;--&lt;/span&gt;&amp;lt;nome_do_arquivo.extensão&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Desfazer alterações: arquivos em :::modified::: (já feito add, mas não commit)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;1º tira ele de modified e leva de volta para untracked:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &amp;lt;nome_do_arquivo.extensão&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2º já é possível fazer checkout e reverter alterações&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;--&lt;/span&gt;&amp;lt;nome_do_arquivo.extensão&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Desfazer alterações: arquivos já commitados
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1º caso SOFT
&lt;/h3&gt;

&lt;p&gt;Tirar arquivo de commit e passar de volta para staged, sem deletar o arquivo, usa-se o comando –soft + a hash do pai, ou seja, a hash do commit anterior ao que eu quero apagar. e depois é possível fazer o checkout.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; &amp;lt;hash_do_pai&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou através da quantidade de commits (voltar atrás em nº de commits):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~&amp;lt;numero de commits&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2º caso MIXED
&lt;/h3&gt;

&lt;p&gt;Tirar arquivo de commit e passar para modified (fora do staged), sem deletar o arquivo, usa-se o comando –mixed + a hash do pai, ou seja, a hash do commit anterior ao que eu quero apagar e depois é possível fazer o checkout.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--mixed&lt;/span&gt; &amp;lt;hash_do_pai&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou&lt;/p&gt;

&lt;p&gt;através da quantidade de commits (voltar atrás em nº de commits):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--mixed&lt;/span&gt; HEAD~&amp;lt;numero de commits&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3º caso DELETAR HARD
&lt;/h3&gt;

&lt;p&gt;Tirar arquivo de commit e deletar o arquivo (todos os commits e arquivos que estão depois do que o commit em questão deixam de existir, são deletados e fica só do commit pai/anterior para baixo). Usa-se o comando –hard + a hash do pai, ou seja, a hash do commit anterior ao que eu quero apagar e depois é possível fazer o checkout.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &amp;lt;hash_do_pai&amp;gt;&amp;lt;hash_do_commit_a_ser_revertido&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou&lt;/p&gt;

&lt;p&gt;através da quantidade de commits (voltar atrás em nº de commits):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~&amp;lt;numero de commits&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reverter alterações
&lt;/h2&gt;

&lt;p&gt;Quase semelhante ao desfazer, mas nesse caso será criado um commit que indica a reversão. É o mais aconselhado.&lt;/p&gt;

&lt;h3&gt;
  
  
  1° caso
&lt;/h3&gt;

&lt;p&gt;Com mensagem sobre a reversão, neste caso o editor de texto irá abrir para que você insira a mensagem sobre o por que da reversão, ou digite (-m “mensagem”) após o hash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git revert &amp;lt;hash_do_commit_a_ser_revertido&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2° caso
&lt;/h3&gt;

&lt;p&gt;Sem mensagem sobre a reversão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git revert &amp;lt;hash_do_commit_a_ser_revertido&amp;gt; &lt;span class="nt"&gt;--no-edit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Desfazer: arquivo deletado da máquina
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;nome_do_arquivo.extensão&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Remover arquivo/pasta pelo Git
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Remover arquivo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;nome_do_arquivo.extensão&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remover pasta
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &amp;lt;nome da pasta&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Desfazer alterações
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Desfazer todas as alterações (untracked)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;visualizar arquivos que estão fora da &lt;em&gt;working tree&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clean &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;deletar arquivos:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clean &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Desfazer todas as alterações (tracked)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Voltar para versão anterior de arquivo (checkout)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &amp;lt;file-name.extension&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Remover arquivo adicionado acidentalmente
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Arquivo ainda não commitado:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &amp;lt;/path/file-name.extension&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Arquivo já commitado:
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Desfazer merge e manter o histórico de commits
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1

git reset &amp;lt;/path/file-name.extension&amp;gt; 

&lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;/path/file-name.extension&amp;gt;

git commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ir para a branch principal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;master_branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;git log para verificar a hash correta&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;fazer a reversão utilizando a hash do merge correspondente&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git revert &lt;span class="nt"&gt;-m&lt;/span&gt; 1 &amp;lt;merge-commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  # Squash (‘comprimir’ commits em um só)
&lt;/h1&gt;

&lt;p&gt;Considerando que você deseja comprimir/transformar seus últimos 1 só.. para isso fazemos o squash.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;desfazer os últimos commits por quantidade (mantendo as alterações):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~&amp;lt;commit_quantity&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ex, desfazer 5 commits: &lt;code&gt;git reset --soft HEAD~5&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;ou você pode optar por utilizar as hashs dos commits. O comando abaixo listará os commits, assim você pode verificar até qual commit você quer desfazer.&lt;br&gt;
(lembrando que os commits são listados do mais novo para o mais antigo)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;em sequida:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; &amp;lt;hash_do_ultimo-commit_que_vc_quer_manter&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ex:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;

&lt;span class="c"&gt;# listou:&lt;/span&gt;
&amp;lt;x323x32&amp;gt; meu commit 6
&amp;lt;kj56kj5&amp;gt; meu commit 5
&amp;lt;8f7g87f&amp;gt; meu commit 4
&amp;lt;k6k356j&amp;gt; meu commit 3
&amp;lt;jk4hj34&amp;gt; meu commit 2
&amp;lt;hjh2424&amp;gt; meu commit 1

&lt;span class="c"&gt;# supomos que você deseja desfazer os 3 primeiros commits &lt;/span&gt;
&lt;span class="c"&gt;# (hash_6, hash_5, hash_4) e manter a partir do hash_3, então você usará&lt;/span&gt;
&lt;span class="c"&gt;# o código do hash 3&lt;/span&gt;

git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; k6k356j
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;faz o processo de add e commit com a mensagem certa&lt;/li&gt;
&lt;li&gt;faz push para o repositório remoto&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  # Configurações globais
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Verificar e editar configurações globais
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configurar usuário e email
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &amp;lt;name&amp;gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &amp;lt;email&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configurar editor padrão
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; core.editor &lt;span class="s1"&gt;'&amp;lt;editor_name&amp;gt; --wait'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;exemplo com o VSCode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; core.editor &lt;span class="s1"&gt;'code --wait'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  # Remover Git no repositório
&lt;/h1&gt;

&lt;p&gt;Se por algum motivo não deseja mais usar o controle de versões e deseja 'desligar/remover' o Git do repositório (esse comando irá remover/deletar o Git do repositório em questão):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; .git/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este comando irá deletar o arquivo onde o git guarda todas as informações e configurações do repositório. Pode ser feito dessa forma, ou deletando o arquivo manualmente.&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
&lt;em&gt;Foto de capa: &lt;a href="https://unsplash.com/@yancymin?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Yancy Min&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/git?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Git alias, crie comandos personalizados para turbinar seu git</title>
      <dc:creator>Lays Hidani</dc:creator>
      <pubDate>Fri, 03 Sep 2021 19:26:36 +0000</pubDate>
      <link>https://dev.to/layshidani/git-alias-crie-comandos-personalizados-para-turbinar-seu-git-79e</link>
      <guid>https://dev.to/layshidani/git-alias-crie-comandos-personalizados-para-turbinar-seu-git-79e</guid>
      <description>&lt;p&gt;Já pensou em customizar seus comandos do Git?&lt;/p&gt;

&lt;p&gt;Os aliases podem turbinar e facilitar o seu dia-a-dia, transformando seus comandos de terminal do git.&lt;/p&gt;

&lt;p&gt;Você pode criar aliases para abreviar os comandos ou personalizá-los como quiser 🤩&lt;/p&gt;

&lt;p&gt;Vamos lá...&lt;/p&gt;




&lt;p&gt;💡 &lt;em&gt;IMPORTANTE: após configurar, é necessário reabrir o terminal para refletir as novas configurações.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Criar alias direto no arquivo de configuração
&lt;/h3&gt;

&lt;p&gt;1 - Abra o arquivo &lt;code&gt;.gitconfig&lt;/code&gt; (localizado no diretório principal), você pode abri-lo através do seu diretório ou via terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;open ~/.gitconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*&lt;em&gt;este comando irá abrir o arquivo em seu editor padrão para que você possa editá-lo&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;2 - Adicione seus aliases da seguinte forma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[alias]
    comando_reduzido = comando_original
    comando_reduzido = comando_original
    comando_reduzido = comando_original
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prontinho! ⚡&lt;br&gt;
Agora é só reabrir seu terminal para que os comandos possam começar a funcionar.&lt;/p&gt;
&lt;h3&gt;
  
  
  Lista de comandos úteis
&lt;/h3&gt;

&lt;p&gt;arquivo &lt;code&gt;.gitconfig&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[alias]
  cm = commit -m
  acm = !git add -A &amp;amp;&amp;amp; git commit -m
  lg = log --oneline
  lgg = log --all --graph --decorate --oneline --abbrev-commit
  b =  branch
  co = checkout
  cb = checkout -b
  st = status
  stt = status -sb
  pl = pull origin
  pu = push origin -u
  plr = pull origin -r
  pp = push origin
  pf = push origin +HEAD
  config = config --global -e
  up = !git pull --rebase --prune $@ &amp;amp;&amp;amp; git submodule update --init --recursive
  save = !git add -A &amp;amp;&amp;amp; git commit -m '~SAVEPOINT :construction:'
  wip = git add -A &amp;amp;&amp;amp; git commit -m '~WIP :construction:'
  undo = reset --soft HEAD~1
  amend = commit --amend
  ops = commit --amend --no-edit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Utilizando os aliases
&lt;/h2&gt;

&lt;p&gt;Vamos supor que eu tenha configurado meus aliases conforme a lista acima, então toda vez que eu quiser utilizar um alias, basta rodar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &amp;lt;&lt;span class="nb"&gt;alias&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👩🏻‍🍳 Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seria o mesmo que digitar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;

git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s1"&gt;'~SAVEPOINT :construction:'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;muito mais prático!&lt;/p&gt;

&lt;h2&gt;
  
  
  Criar alias via linha de comando
&lt;/h2&gt;

&lt;p&gt;Também é possível configurar seus aliases via linha de comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; alias.&amp;lt;seu-alias&amp;gt; &amp;lt;comando-original&amp;gt;

&lt;span class="c"&gt;# exemplo&lt;/span&gt;
&lt;span class="c"&gt;# git config --global alias.st status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No exemplo acima, depois de configurado, ao invés de ter que digitar &lt;code&gt;git status&lt;/code&gt;, basta digitar &lt;code&gt;git st&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A opção &lt;code&gt;–global&lt;/code&gt; quer dizer que o alias será aplicado no arquivo .gitconfig dentro do seu diretório home, e por isso o alias será aplicado em todos seus repositórios. Sem esta opção, o alias será aplicado no .gitconfig do repositório atual, logo só será aplicado apenas a ele.}}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/kelvinst/331aff32508e2517afbd"&gt;https://gist.github.com/kelvinst/331aff32508e2517afbd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📖 &lt;a href="https://haacked.com/archive/2014/07/28/github-flow-aliases/"&gt;saiba mais&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
&lt;em&gt;Foto da capa: &lt;a href="https://unsplash.com/@synkevych?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Roman Synkevych&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/git?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
