<?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: Kauê Cavalcante</title>
    <description>The latest articles on DEV Community by Kauê Cavalcante (@kauecdev).</description>
    <link>https://dev.to/kauecdev</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%2F464080%2F7f65c615-cb06-4350-a29c-5d76ee19d397.jpg</url>
      <title>DEV Community: Kauê Cavalcante</title>
      <link>https://dev.to/kauecdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kauecdev"/>
    <language>en</language>
    <item>
      <title>[Tutorial] Git + VS Code: como trabalhar com branches utilizando sua IDE</title>
      <dc:creator>Kauê Cavalcante</dc:creator>
      <pubDate>Sat, 05 Mar 2022 22:47:29 +0000</pubDate>
      <link>https://dev.to/kauecdev/tutorial-git-vs-code-como-trabalhar-com-branches-utilizando-sua-ide-2gbd</link>
      <guid>https://dev.to/kauecdev/tutorial-git-vs-code-como-trabalhar-com-branches-utilizando-sua-ide-2gbd</guid>
      <description>&lt;p&gt;Você faz parte da galera que não é muito chegada com o terminal? Ou simplesmente prefere ferramentas gráficas pois acha mais produtivo?&lt;/p&gt;

&lt;p&gt;Se sua resposta for sim, então essa leitura é para você, pois hoje vamos aprender a utilizar as funcionalidades do git no Visual Studio Code. E mais: aprenderemos sobre branches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Branches
&lt;/h2&gt;

&lt;p&gt;Antes de começarmos, vamos responder o que são &lt;strong&gt;branches&lt;/strong&gt;. Imagine que um branch seja uma linha do tempo dos seus commits, como na imagem a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Feh9n5ovc1izedlheovxy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Feh9n5ovc1izedlheovxy.png" alt="Git branch explanation" width="800" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Observe que no começo, temos um bloco com a palavra "Main" (Pode ser master em versões anteriores do git). Ela representa o nome dessa branch, que é a branch inicial dos projetos quando inicializamos o git em um projeto.&lt;/p&gt;

&lt;p&gt;Agora, vamos supor que queremos adicionar uma nova funcionalidade no projeto, mas que por segurança, devemos fazer isso sem afetar o código principal? É para isso que usamos as branches. Elas servem para isolarmos nosso código criando ramificações a partir de um ponto, permitindo criamos códigos e testar diferentes cenários sem afetar o código da ramificação principal (main/master).&lt;/p&gt;

&lt;h2&gt;
  
  
  Operações git no Visual Studio Code
&lt;/h2&gt;

&lt;p&gt;Vamos então criar um novo projeto e iniciar o versionamento com o git.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F7l0d5540nrmqyqcn9wiq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7l0d5540nrmqyqcn9wiq.png" alt="Initializing" width="800" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok! Se tentarmos o comando &lt;code&gt;git status&lt;/code&gt;, veremos que ele nos informa em qual branch estamos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fem6acyswv9pmbp562idp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fem6acyswv9pmbp562idp.png" alt="Git status" width="753" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Certo, mas chega de linha de comando e vamos abrir o VS Code. Aproveitemos e criemos também um arquivo de texto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fhxgwzs69tf2qialw3pdb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fhxgwzs69tf2qialw3pdb.png" alt="VSCode" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, o git já reconheceu o arquivo e o classificou como untracked. Vamos aprender a mover este arquivo para nossa Staging Area. Basta clicar na aba Source Control (ou ctrl+shift+g) para ir para a parte de versionamento, e clicar no botão para fazer o stage (representando por um +). Veja a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fdnrlnojgp1h9mlt6qulw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdnrlnojgp1h9mlt6qulw.gif" alt="Staging files gif" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, vamos confirmar nossas alterações fazendo um commit. Primeiramente, vamos escrever uma mensagem para nosso commit e então clicar no botão para fazer o commit, como no GIF a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ftbvx8dhip302uzt70nl4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ftbvx8dhip302uzt70nl4.gif" alt="Commit files gif" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E pronto! Aprendemos a adicionar nossos arquivos na Staging Area e fazer commits usando somente o VSCode.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando uma nova branch
&lt;/h2&gt;

&lt;p&gt;Ok, mas o assunto principal aqui são as branches, certo? Então vamos começar criando uma nova branch. No menu de ações da aba do git, podemos visualizar várias outras operações que podemos realizar no nosso repositório, porém iremos focar nas opções de 'Branch'.&lt;/p&gt;

&lt;p&gt;Se passarmos o mouse em cima, veremos que o menu expande nos mostrando outras ações. Escolheremos a "Create branch" ou "Criar branch".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fejoyfib09mcx1brx64hv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fejoyfib09mcx1brx64hv.gif" alt="Creating branch gif" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, nosso esquema de branch ficará assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fiuxrk30r4dtf1c1mcneq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fiuxrk30r4dtf1c1mcneq.png" alt="New branch added" width="558" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Perceba que além de criar a nova branch, o VS Code já nos moveu para a nova branch (na parte inferior esquerda do VS Code é possível ver o nome da branch atual). Agora, qualquer código produzido aqui não irá afetar a branch master.&lt;/p&gt;

&lt;p&gt;O comando no terminal equivalente a esta operação seria:&lt;br&gt;
&lt;code&gt;git branch &amp;lt;nome da branch&amp;gt;&lt;/code&gt; seguido do comando &lt;code&gt;git checkout &amp;lt;nome da branch&amp;gt;&lt;/code&gt;, ou simplesmente &lt;code&gt;git checkout -b &amp;lt;nome da branch&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Assim como os commits precisam de uma mensagem, as branches precisam ser nomeadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commit na nova branch
&lt;/h2&gt;

&lt;p&gt;Vamos aproveitar que já estamos na nova branch e alterar o nosso arquivo, para então adicioná-lo na staging area e fazer o commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fzy89j9nki4aa7s9aapjo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fzy89j9nki4aa7s9aapjo.gif" alt="Commit another branch" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com isso, nosso esquema se parecerá com isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fdnfvf6z2ovwi3luyftny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdnfvf6z2ovwi3luyftny.png" alt="New commit on new branch" width="517" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pronto. Agora, vamos voltar para a branch master e veremos o que acontece com o nosso arquivo. Observe:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ffeqs3zo9fr22h8jb79lr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ffeqs3zo9fr22h8jb79lr.gif" alt="Checkout gif" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O comando no terminal equivalente para esta operação é &lt;code&gt;git checkout &amp;lt;nome da branch&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Voltamos para a branch master e o nosso arquivo não está com as últimas alterações que fizemos agora a pouco. Isso acontece porque fizemos a alteração em outra branch e como dissemos anteriormente, as alterações feitas em uma branch não afetam as outras.&lt;/p&gt;

&lt;h2&gt;
  
  
  Merge entre branches
&lt;/h2&gt;

&lt;p&gt;Vamos supor que aquela outra branch que criamos era uma branch com o propósito de implementarmos uma nova feature para o projeto ou uma correção de algum erro. Implementamos, testamos e concluímos que ela está pronta para ser adicionada na branch master, para fazer parte do projeto. Para isso, utilizamos a operação de merge.&lt;/p&gt;

&lt;p&gt;Vamos fazer o merge da nossa branch criada com a branch merge:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fz550fmbl6rvrzkw2gojk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz550fmbl6rvrzkw2gojk.gif" alt="Merge gif" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na linha de comando, primeiro precisaríamos fazer o &lt;code&gt;git checkout&lt;/code&gt; para a branch que iríamos receber a outra branch com o merge (nesse caso, a master) e então usaríamos o comando &lt;code&gt;git merge &amp;lt;nome da branch para mergear&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Agora podemos ver que a alterações que tínhamos na outra branch, agora estão também na master.&lt;/p&gt;

&lt;p&gt;Com isso, o nosso esquema ficará assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fstzkld3db2imfr25sd2r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fstzkld3db2imfr25sd2r.png" alt="Branches merged schema" width="241" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conflitos de merge
&lt;/h2&gt;

&lt;p&gt;Até aqui, mil maravilhas, certo? Mas nem tudo são apenas rosas, principalmente quando se trabalha em time. Vamos supor que você e algum colega alteraram o mesmo arquivo e fizeram o commit em branches diferentes. Como ficaria na hora do merge?&lt;/p&gt;

&lt;p&gt;Nesse caso, teremos um conflito. Mas sem pânico, pois podemos resolvê-los. Vamos alterar o mesmo file.txt na master e na outra branch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbheo44q43f7qn6qxpuco.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbheo44q43f7qn6qxpuco.gif" alt="Editado na master" width="800" height="400"&gt;&lt;/a&gt;&lt;a href="https://media2.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%2F7shptk1vzabgl06db4fi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7shptk1vzabgl06db4fi.gif" alt="Editado na outra branch" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beleza! Agora vamos voltar para a branch master e tentar fazer o merge para ver o que acontece:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F974zllxcci66zo8acp73.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F974zllxcci66zo8acp73.gif" alt="Merge conflict" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E voalá! Temos um conflito. A parte boa disso é que podemos facilmente resolver estes conflitos já que o próprio VS Code nos diz onde está o conflito, o porquê de estar ocorrendo e de onde vem cada parte de código.&lt;/p&gt;

&lt;p&gt;Ele também nos fornece algumas opções, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aceitar a mudança atual&lt;/li&gt;
&lt;li&gt;Aceitar a mudança da branch que está sendo mergeada&lt;/li&gt;
&lt;li&gt;Aceitar ambas as mudanças&lt;/li&gt;
&lt;li&gt;Comparar as mudanças&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vamos somente aceitar aqui ambas as mudanças, mas sinta-se livre para explorar as outras opções, que já são bem auto descritivas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Femqk0dc3af07ua5ox0ee.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Femqk0dc3af07ua5ox0ee.gif" alt="Merge conflict resolved" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prontinho! Conflitos resolvidos e commitados.&lt;/p&gt;

</description>
      <category>git</category>
      <category>vscode</category>
      <category>beginners</category>
    </item>
    <item>
      <title>[Tutorial] Aprendendo sobre versionamento de código com Git</title>
      <dc:creator>Kauê Cavalcante</dc:creator>
      <pubDate>Sun, 20 Feb 2022 14:29:10 +0000</pubDate>
      <link>https://dev.to/kauecdev/tutorial-aprendendo-sobre-versionamento-de-codigo-com-git-8mh</link>
      <guid>https://dev.to/kauecdev/tutorial-aprendendo-sobre-versionamento-de-codigo-com-git-8mh</guid>
      <description>&lt;p&gt;O Git é uma ferramenta que não pode faltar no cinto de utilidades de um desenvolvedor, principalmente quando se produz código em grupo.&lt;/p&gt;

&lt;p&gt;Segundo a própria Wikipédia: "Git  é um sistema de controle de versões distribuído", ou seja, é ele quem irá auxiliar no gerenciamento das diferentes versões que um projeto pode ter e facilitar o time a integrar seus códigos sem o perigo de um sobrescrever o trabalho do outro.&lt;/p&gt;

&lt;p&gt;Então se você quer aprender a utilizar esta poderosa ferramenta, continue descendo e aproveite a leitura!&lt;/p&gt;

&lt;h2&gt;
  
  
  Iniciando os conceitos básicos - &lt;code&gt;git init&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos começar criando um novo diretório e iniciando o git no mesmo. Para iniciar o git no seu diretório, utilize o comando &lt;code&gt;git init&lt;/code&gt;, como mostrado a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fhdkplatdw8e8p0adqgid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fhdkplatdw8e8p0adqgid.png" alt="Criação de diretório e inicialização do git" width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Perfeito! Agora com o diretório criado e o git inicializado, vamos entender alguns conceitos. Para isso, considere a imagem a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2gkz2r3ogxtsrw3vj5v7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2gkz2r3ogxtsrw3vj5v7.png" alt="Dev Environment" width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa é a representação do seu ambiente de desenvolvimento local. Nele você tem o seu diretório de trabalho (Working Directory), a Staging Area e o Local Repository. A Staging Area recebe este nome pois é justamente o local onde os arquivos irão ficar "se preparando" antes de irem para o Local Repository, que por sua vez, é o local de armazenamento onde o git gerencia as versões do seu código.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verificando status - &lt;code&gt;git status&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Agora vamos abrir um editor de código e criar um novo arquivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2bkouwjxmgydf5rpft50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2bkouwjxmgydf5rpft50.png" alt="Arquivo criado no VSCode" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ótimo! Agora com nosso novo arquivo criado, vamos aprender nosso próximo comando git, o &lt;code&gt;git status&lt;/code&gt;. Ele serve para nos dar um pequeno relatório sobre a situação dos arquivos no nosso diretório. Veja um exemplo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ffkxcsalk6zx6r8tudulm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ffkxcsalk6zx6r8tudulm.png" alt="Git status" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adicionando arquivos na Staging Area - &lt;code&gt;git add&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Como podemos ver na saída do comando anterior, temos um arquivo que não foi 'trackeado', ou seja, o git não está monitorando-o. Isso quer dizer que o git não irá guardar informações sobre as alterações desse arquivo. Para mudar isso, precisamos movê-lo para a Staging Area, onde ele ficará esperando para ser lançado numa versão do nosso projeto. Para fazer isso, utilizaremos o comando &lt;code&gt;git add&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjyitmbfq31aq403q74tr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjyitmbfq31aq403q74tr.png" alt="Git add schema" width="800" height="263"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Podemos utilizar esse comando de duas formas: com o nome do(s) arquivo(s) específicos após o comando ou utilizando um '.' para sinalizar que queremos adicionar todos os arquivos com modificações. Veja a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fqoossgemtyqimqngweju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqoossgemtyqimqngweju.png" alt="Git add example" width="747" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fl7u73j0jxaopbhemoja3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fl7u73j0jxaopbhemoja3.png" alt="Codigo apos add" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como você pode ver, o VS Code também detectou as alterações que fizemos. Agora, invés do 'U' ao lado do nosso arquivo, agora temos um 'A', sinalizando que o arquivo foi movido para a Staging Area.&lt;/p&gt;

&lt;h2&gt;
  
  
  Salvando nosso trabalho no Local Repository - &lt;code&gt;git commit&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;O nosso arquivo na Staging Area está pronto para ser salvo no nosso Local Repository. Para isso, precisamos 'commitar' nosso código, isto é, salvar o estado dos arquivos da Staging Area no nosso Local Repository, gerando um commit que armazenará essas informações. Utilizaremos o comando &lt;code&gt;git commit&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ftjy6gu8gn6ssl6v0vkri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ftjy6gu8gn6ssl6v0vkri.png" alt="Git commit schema" width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se checarmos o status do git, veremos que a mensagem mudou:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Flvcokbo25r87hux0djiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flvcokbo25r87hux0djiy.png" alt="Git status após o add" width="673" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora ele nos informa que temos arquivos a serem commitados e é exatamente o que faremos agora.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fy3ezffb2dqkkxxz9ued0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fy3ezffb2dqkkxxz9ued0.png" alt="Git commit command line" width="800" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Todo commit precisa de uma mensagem. Geralmente ela deve ser uma pequena descrição do trabalho que foi commitado. Existem diversos padrões de commit e podemos falar deles em outro momento.&lt;/p&gt;

&lt;p&gt;Como podemos ver também, ele nos retorna algumas informações a respeito do commit criado.&lt;/p&gt;

&lt;p&gt;Perfeito, agora nosso trabalho está salvo no nosso Local Repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Removendo arquivos da Staging Area - &lt;code&gt;git restore&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Em algum momento, podemos querer remover alguma mudança que adicionamos na Staging Area. Para isso, podemos utilizar o comando &lt;code&gt;git restore&lt;/code&gt;, que irá remover o arquivo da Staging Area. Para demonstrar isso, criaremos um novo arquivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbeyxk6y0apsw2xwgajo6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbeyxk6y0apsw2xwgajo6.png" alt="Novo arquivo criado" width="800" height="206"&gt;&lt;/a&gt;&lt;a href="https://media2.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%2Fzr81ccmexspf3yxw66sm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fzr81ccmexspf3yxw66sm.png" alt="Git status após novo arquivo criado" width="800" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Perfeito, agora temos um novo arquivo no nosso Working Directory. Vamos movê-lo para a Staging Area.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F7el93d0oh5pphmlguet0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7el93d0oh5pphmlguet0.png" alt="Arquivo após ser movido para a Staging Area" width="657" height="181"&gt;&lt;/a&gt;&lt;a href="https://media2.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%2Fv3kikojenqa6y86nz1tu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fv3kikojenqa6y86nz1tu.png" alt="Arquivo após ser movido para a Staging Area - VSCode" width="800" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note que o próprio git nos auxilia ao informar como podemos retirar algum arquivo da Staging Area. Precisaremos do comando &lt;code&gt;git restore&lt;/code&gt; juntamente com a flag &lt;code&gt;--staged&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbfjk98nfzobzy6yk4ufd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbfjk98nfzobzy6yk4ufd.png" alt="Git restore command line" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, após utilizar o comando, a mensagem exibida pelo &lt;code&gt;git status&lt;/code&gt; é a mesma de quando criamos o arquivo, e caso verifiquemos o nosso arquivo no VS Code, ele continua o mesmo, a única diferença é que retornou ao status de untracked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fgdllnx8ylc3ie6jmcgam.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fgdllnx8ylc3ie6jmcgam.png" alt="Arquivo após ser removido da Staging Area" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lendo o histórico de commits - &lt;code&gt;git log&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Caso você queira verificar o histórico dos commits no seu projeto, você pode utilizar o comando &lt;code&gt;git log&lt;/code&gt;. Ele exibirá uma lista com os commits, bem como algumas informações sobre cada um deles. Vamos lá testar:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2a9cbdqswqgpn6kam7x1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2a9cbdqswqgpn6kam7x1.png" alt="Git log command line" width="716" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como você pode ver, temos informações como o nome do autor do commit, o hash (que é um código aleatório único para identificar aquele commit), a data de criação e sua mensagem.&lt;/p&gt;

&lt;p&gt;No topo, podemos também ver a mensagem &lt;code&gt;HEAD&lt;/code&gt;. Isso significa que esse commit foi o último a ser realizado, ou seja, está no topo (na cabeça) do histórico do nosso projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Revertendo o último commit - &lt;code&gt;git reset&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos supor que você commitou algum arquivo que não estivesse completo ou com alguns bugs e agora precisa desfazer seu último commit. Nessa situação, você pode utilizar o comando &lt;code&gt;git reset&lt;/code&gt;. Para demonstrar o uso, vamos novamente adicionar o nosso novo arquivo na Staging Area e então fazer o commit:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fcswr9ujvry5klt54z3et.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fcswr9ujvry5klt54z3et.png" alt="Adicionando e commitando novo arquivo" width="800" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, se verificarmos o histórico, veremos que o novo commit está no topo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fm5cpcbi3bosjoluw8l6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fm5cpcbi3bosjoluw8l6f.png" alt="Git log atualizado" width="749" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Certo, agora é hora de desfazermos nosso último commit:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F73c5ddaq9z4y9jiq3l0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F73c5ddaq9z4y9jiq3l0j.png" alt="Git reset command line" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, o nosso arquivo voltou ao seu estado de untracked, o que significa que o nosso commit foi desfeito. Para ter certeza, vamos checar o log:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fezdkthwt3p75uf9imzd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fezdkthwt3p75uf9imzd4.png" alt="Git log atualizado após desfazer último commit" width="729" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voalá! O nosso commit não está mais lá.&lt;/p&gt;

&lt;h2&gt;
  
  
  Renomeando commits - flag &lt;code&gt;--amend&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos supor que na hora de nomear o seu commit você acabou digitando algo errado da qual não percebeu, como você faria para renomear seu último commit?&lt;/p&gt;

&lt;p&gt;Felizmente, o git nos oferece essa opção também e de maneira bem simples. Tudo o que você precisará fazer é novamente utilizar o &lt;br&gt;
&lt;code&gt;git commit&lt;/code&gt;, mas dessa vez, com uma flag chamada &lt;code&gt;--amend&lt;/code&gt;. Ela permitirá que você dê um novo nome para seu último commit. Vamos ver na prática.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbg47b9e87e4x6glpzqfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbg47b9e87e4x6glpzqfy.png" alt="Git log" width="711" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, o nosso último commit ainda está como antes. Vamos renomeá-lo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fdte7qny4dfzxoq2xihb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdte7qny4dfzxoq2xihb1.png" alt="Git commit --amend command line" width="800" height="90"&gt;&lt;/a&gt;&lt;a href="https://media2.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%2F9bqni1qiiahc0488yifc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F9bqni1qiiahc0488yifc.png" alt="Git log após commit renomeado" width="713" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver pelo &lt;code&gt;git log&lt;/code&gt;, a mensagem do último commit foi editada com sucesso!&lt;/p&gt;

&lt;h2&gt;
  
  
  Removendo arquivos do git - &lt;code&gt;git rm&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Bom, mas e se quisermos remover de vez um arquivo do nosso sistema de versionamento? Simples: utilizamos o comano &lt;code&gt;git rm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Vamos remover o arquivo que commitamos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fc8ezvvfspd2lp0v5p0vf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fc8ezvvfspd2lp0v5p0vf.png" alt="Git rm" width="704" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, na mensagem retornada pelo &lt;code&gt;git status&lt;/code&gt;, o arquivo foi deletado. Para confirmar a remoção precisamos fazer o commit, assim salvando um novo state onde o arquivo é removido do versionamento. Como eu não desejo executar a remoção, vou somente reverter o processo utilizando o comando &lt;code&gt;git restore --staged&lt;/code&gt; e em seguida o &lt;code&gt;git restore&lt;/code&gt; para reverter as alterações e voltar ao estado inicial.&lt;/p&gt;

&lt;h2&gt;
  
  
  Salvando suas alterações sem commitar - &lt;code&gt;git stash&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;O git nos oferece também a opção de salvarmos alterações no nosso código sem precisar fazer o commmit. O comando &lt;code&gt;git stash&lt;/code&gt; nos permite salvar alterações de forma separada dos commits para utilizarmos em um momento futuro, caso desejemos.&lt;/p&gt;

&lt;p&gt;Vamos começar modificando nosso arquivo já commitado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fv359r11eaysr76wgy3ii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fv359r11eaysr76wgy3ii.png" alt="Arquivo modificado" width="800" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, com o arquivo alterado, vamos executar o stash:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fnifnknhdjpmek36e5zet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnifnknhdjpmek36e5zet.png" alt="Git stash command line" width="800" height="281"&gt;&lt;/a&gt;&lt;a href="https://media2.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%2Fxi3k5ch0q4ijulfqfwzz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fxi3k5ch0q4ijulfqfwzz.png" alt="VSCode após stash" width="800" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, inicialmente temos o git status nos informando que o arquivo havia sido alterado, em seguida, executamos o comando &lt;code&gt;git stash push -m&lt;/code&gt; que nos permite associar uma mensagem ao nosso stash, assim como fazemos com os commits. Por fim, executamos novamente o &lt;code&gt;git status&lt;/code&gt; e vemos que o diretório está limpo como se nada tivesse acontecido.&lt;/p&gt;

&lt;p&gt;Vamos agora conferir a lista de stash para ter certeza de que nosso stash foi salvo. Utilizaremos o comando &lt;code&gt;git stash list&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fv4c3aofy04bit4de09aa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fv4c3aofy04bit4de09aa.png" alt="Git stash list command line" width="698" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E aí está, o nosso stash salvo com sucesso. Agora vamos aplicar as alterações que salvamos nesse stash no nosso código novamente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fd39rabp9ecj5nmjnd57r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fd39rabp9ecj5nmjnd57r.png" alt="Git stash apply command line" width="800" height="214"&gt;&lt;/a&gt;&lt;a href="https://media2.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%2Fz713el8qny1kcblkjpul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz713el8qny1kcblkjpul.png" alt="VSCode após git stash apply" width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prontinho, as alterações que havíamos salvo estão de volta no nosso diretório.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;git stash&lt;/code&gt; oferece outras opções como&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git stash&lt;/code&gt;: para fazer o stash sem passar uma mensagem.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git stash show&lt;/code&gt;: para listar os arquivos modificados que foram salvos no último stash.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git stash pop&lt;/code&gt;: para remover em forma de pilha (do mais recente para o mais antigo).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git stash clear&lt;/code&gt;: para remover todos os stashs.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Etapas no desenvolvimento de software</title>
      <dc:creator>Kauê Cavalcante</dc:creator>
      <pubDate>Sat, 05 Sep 2020 16:19:42 +0000</pubDate>
      <link>https://dev.to/kauecdev/etapas-no-desenvolvimento-de-software-4plg</link>
      <guid>https://dev.to/kauecdev/etapas-no-desenvolvimento-de-software-4plg</guid>
      <description>&lt;p&gt;Juntamente com a ideia de se criar um novo software, vem a necessidade de se fazer um bom planejamento para garantir não só o seu sucesso do ponto de vista de visibilidade, mas também o seu sucesso no funcionamento. &lt;/p&gt;

&lt;p&gt;Para isso, algumas etapas no desenvolvimento de software não inclui somente códigos e mais códigos, mas também bastante pesquisa e recebimento de feedbacks dos usuários, seja na fase de testes ou após o deploy da aplicação.&lt;/p&gt;

&lt;p&gt;Hoje vou citar algumas das fases mais essenciais no desenvolvimento de um software.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Análise de sistema:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inicialmente, é primordial haver uma análise do que se está prestes a ser criado, seja por meio de um texto descritivo ou usando algum outro sistema existente como referência.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Benchmarking:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O benchmarking é uma análise estratégica das melhores práticas usadas por empresas do mesmo setor que o seu. Não tenha medo de usar outros gigantes do seu setor como inspiração, afinal, se eles são tão grandes, é porque com certeza fizeram o melhor possível.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entrevistas com o mercado e detecção de problemas:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Obter informações com o mercado é uma ótima maneira de reunir dados para análise complementar e evitar possíveis falhas futuras.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Criação de personas:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personas são um perfil semificcional que representa o público ideal de seu produto. É diferente dos dados demográficos em uma análise de público-alvo, pois as personas são descritas de forma bem mais detalha para que o processo de adaptação do software aos usuários seja mais precisa.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Criação do mapa de empatia:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Criadas as personas, é hora de levantar alguns questionamentos para imaginar de forma mais profunda o contexto dos perfis das personas, como por exemplo: "O que o usuário pensa?", "O que usuário vê?"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Esquematização do Software:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sitemap: listar as páginas de um site ou app e organizar seu conteúdo.&lt;/p&gt;

&lt;p&gt;Fluxograma: diagrama que mostra as etapas do desenvolvimento.&lt;/p&gt;

&lt;p&gt;Sketch, Figma, Adobe XD, etc: ferramentas focadas em estruturar a UI/UX do software.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fase de prototipação:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nessa fase, os desenvolvedores podem optar por desenvolver um protótipo de forma rápida e de baixo custo, para visualizar o produto com seus requisitos e funcionalidades básicas, ou uma simulação próxima do produto final.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Teste de usabilidade:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com o protótipo pronto, é hora de realizar os primeiros testes, que podem ser feitos através de pesquisas qualitativas com o usuário, com distribuição do produto de forma privada e limitada (versões alfa e beta), monitorando suas interações.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Histórias de usuário:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Em metodologias ágeis, as histórias são essenciais para a definição de escopo. Uma história é uma forma de explicitar os requisitos e funcionalidades do sistema em questão. A partir da prototipação, o teste de usabilidade permite que a história seja formulada de forma precisa.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validação do testes e TDD:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feitos os primeiros testes e com as falhas relatadas, nada melhor do que automatizar a correção de possíveis bugs e tratamento de erros, para otimizar o código e deixar o funcionamento mais fluído. TDD (ou Test Driven Development), consiste em testar e refatorar em pequenos ciclos, onde você escreve o teste antes do código, faz o código passar e após isso, refatora.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fase de deploy e QA:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com os componentes prontos e devidamente integrados ao sistema ou importados de outro sistema, realiza-se o lançamento da aplicação.&lt;/p&gt;

&lt;p&gt;A fase de QA (Quality Assurance ou Garantia de Qualidade) é, então, implementada, prevenindo problemas e erros que possam acontecer após o deploy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitoramento de performance, manutenção, segurança, novas features:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O software, após desenvolvido e lançado, ainda precisa regularmente ter sua performance monitorada, otimização em momentos de downtime e desempenho em diferentes hardwares. Além disso, a implementação de novas funcionalidades é algo a se pensar conforme o app for ganhando notoriedade, a necessidade surgir e os pedidos dos usuários por novas funções forem chegando.&lt;/p&gt;

&lt;p&gt;É preciso garantir ao usuário a melhor e mais segura infraestrutura possível de forma contínua.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
