<?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: Paulo Giovani</title>
    <description>The latest articles on DEV Community by Paulo Giovani (@paulogiovani).</description>
    <link>https://dev.to/paulogiovani</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%2F703836%2F2a2a4136-0ffb-45a2-b205-e6d6839b04ab.jpg</url>
      <title>DEV Community: Paulo Giovani</title>
      <link>https://dev.to/paulogiovani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paulogiovani"/>
    <language>en</language>
    <item>
      <title>Neovim e conflitos de merge</title>
      <dc:creator>Paulo Giovani</dc:creator>
      <pubDate>Sun, 12 Sep 2021 00:10:35 +0000</pubDate>
      <link>https://dev.to/paulogiovani/neovim-e-conflitos-de-merge-1h9k</link>
      <guid>https://dev.to/paulogiovani/neovim-e-conflitos-de-merge-1h9k</guid>
      <description>&lt;h2&gt;
  
  
  Uma forma de resolver conflitos de merge do Git
&lt;/h2&gt;

&lt;p&gt;De todos os editores que já usei, foi do Neovim que mais gostei. Sim, eu gosto do Vim e Neovim. Como Andrew Hunt e David Thomas escreveram no clássico livro O Programado Pragmático, você escolhe seu editor como um artesão escolhe suas ferramentas. E treina até se tornar mestre nela.&lt;/p&gt;

&lt;p&gt;Optei pelo Neovim em 2021 e até agora só alegria. Admito que a curva de aprendizagem dele é mais alta que a de um VSCode. Por outro lado, me divertido e aprendo muito ao customizá-lo. E quando o assunto é Git, o Neovim me ajuda bastante. E não é só do famoso plugin vim-fugitive do Tim Pope que me refiro. &lt;/p&gt;

&lt;p&gt;Com a configuração abaixo no &lt;code&gt;.gitconfig&lt;/code&gt;, é possível transformar o Neovim em uma poderosa ferramenta para auxiliar na resolução de conflitos de merge.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[mergetool "nvim"]
  cmd = nvim -f -c \"Gvdiffsplit!\" \"$MERGED\"
[merge]
  tool = nvim 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Vamos a um teste?
&lt;/h4&gt;

&lt;p&gt;Digamos que temos um pequeno programa em Ruby, como abaixo, no branch master. E já fizemos o primeiro commit nele. &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%2F60aa4ag90nnoe6rvuj1b.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%2F60aa4ag90nnoe6rvuj1b.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, mudamos para o branch test1 com &lt;code&gt;git checkout -b test1&lt;/code&gt;. Vamos incluir mais um personagem no array de hobbits, Fredegar.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;hobbits = %w[Frodo Sam Merry Pippin Bilbo Rosinha Fredegar]&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Em seguida o commit dessa alteração com &lt;code&gt;git commit -am 'added Fredegar'&lt;/code&gt;, já que o arquivo aparece com status de modificado.  &lt;/p&gt;

&lt;p&gt;Concomitante ao branch test1, digamos que outra pessoa vez &lt;code&gt;git checkout -b test2&lt;/code&gt; e realizou a seguinte inclusão no array:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;hobbits = %w[Frodo Sam Merry Pippin Bilbo Rosinha Gandalf]&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
E completa com &lt;code&gt;git commit -am 'added Gandalf'&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Hora de fazer merge no master 👀 🙈 🥶
&lt;/h4&gt;

&lt;p&gt;Você vem na tranquilidade e faz o merge da branch test1:&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%2F7tff1oyzjh0zw15l848n.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%2F7tff1oyzjh0zw15l848n.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continua na tranquilidade e faz o merge do branch test2:&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%2Fh5yywvz0ruhkr4kzy73j.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%2Fh5yywvz0ruhkr4kzy73j.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eita! Deu conflito. E o Neovim irá ajudar a resolver. Vamos ver o que aconteceu.&lt;/p&gt;

&lt;p&gt;Primeiro, vamos digitar &lt;code&gt;git mergetools&lt;/code&gt; no terminal e boom!!&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%2F0nmohcvgt6bsxsqfuv4m.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%2F0nmohcvgt6bsxsqfuv4m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Neovim é aberto com splits verticais. Da esquerda para direita está primeiro a alteração apontando para o HEAD (foi a inclusão de Fredegar), depois o arquivo a ser editado com a resolução do conflito e por último o arquivo que gerou conflito apontando para a branch test2. &lt;/p&gt;

&lt;p&gt;Conversamos com a pessoa e explicamos que além de commitar na mesma linha, ela inseriu Gandalf na lista de hobbits. O mago e os hobbits vão ficar retados. Vamos corrigir. &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%2Fba52owg0obkr7zot4e8d.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%2Fba52owg0obkr7zot4e8d.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pronto. Quem deve constar na lista é Fredegar. Deletamos as outras linhas e salvamos o arquivo.&lt;/p&gt;

&lt;p&gt;Terminou? Ainda não. Depois de salvar, faremos o commit da "conciliação" para selar a paz e registrar as correções. &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%2F29msywlfp418lg5f4cwj.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%2F29msywlfp418lg5f4cwj.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora sim! Conflito resolvido 😎. &lt;/p&gt;

&lt;p&gt;Enfim, existe outras formas de realizar essa atividade. Essa é uma delas. Que particularmente gosto. Espero que o meu aprendizado possa te ajudar a resolver conflitos de merge que aparecerem.   &lt;/p&gt;

</description>
      <category>vim</category>
      <category>git</category>
      <category>merge</category>
    </item>
  </channel>
</rss>
