<?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>Forem: Guilherme Freitas</title>
    <description>The latest articles on Forem by Guilherme Freitas (@guiffsouza).</description>
    <link>https://forem.com/guiffsouza</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%2F1056859%2F0ee73b06-cf08-4d80-a2a5-f6f99c48345f.jpeg</url>
      <title>Forem: Guilherme Freitas</title>
      <link>https://forem.com/guiffsouza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/guiffsouza"/>
    <language>en</language>
    <item>
      <title>Como criar uma packege/lib npm ?</title>
      <dc:creator>Guilherme Freitas</dc:creator>
      <pubDate>Sat, 06 May 2023 21:26:05 +0000</pubDate>
      <link>https://forem.com/guiffsouza/como-criar-uma-packegelib-npm--440n</link>
      <guid>https://forem.com/guiffsouza/como-criar-uma-packegelib-npm--440n</guid>
      <description>&lt;h2&gt;
  
  
  Como criar um Packege npm ?
&lt;/h2&gt;

&lt;p&gt;Hoje veremos o comando NPM na criação de pacotes npm.&lt;/p&gt;

&lt;h3&gt;
  
  
  Criando sua conta no npm
&lt;/h3&gt;

&lt;p&gt;Primeiro precisamos ter uma conta no site &lt;a href="https://www.npmjs.com/"&gt;npm&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adicione sua conta ao npm na sua maquina
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm adduser [nome do usuario]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Criando o projeto
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npx tsdx create mylib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Criando o componente
&lt;/h3&gt;

&lt;p&gt;Nesse exemplo usaremos &lt;code&gt;styled-components&lt;/code&gt; então instale antes de continuar o tutorial&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$npm install styled-componentes &amp;amp;&amp;amp; npm install @types/styled-componets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora sim, criamos o componente&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import { ReactNode } from "react";
import ThemeProvider from "../../provider/theme-provider";
import styled from "styled-components";

interface ButtonStyleProps {
  variant: string
}

export const ButtonStyle = styled.button&amp;lt;ButtonStyleProps&amp;gt;`
  ${({theme, variant})=&amp;gt;{
    return {
      color: theme[variant].text,
      backgroundColor: theme[variant].background,
      padding: '10px 20px',
      cursor: 'pointer',
      fontWeight: '500',
      margin: '10px 0',
      width: '100%',
    }
  }}
`

export interface ButtonProps {
  children: ReactNode
  variant?: 'dark' | 'light';
  onclick: (e:  React.MouseEvent&amp;lt;HTMLButtonElement&amp;gt;) =&amp;gt; void;
  type?: 'submit' | 'button' | 'reset';
  name?: string;
}

export function Button({
  children,
  onclick,
  name='formulario',
  type = 'submit',
  variant = 'light'
}: ButtonProps){
  return (
    &amp;lt;ThemeProvider&amp;gt;
      &amp;lt;ButtonStyle
        name={name}
        type={type}
        onClick={onclick}
        variant={variant}&amp;gt;
        {children}
      &amp;lt;/ButtonStyle&amp;gt;
    &amp;lt;/ThemeProvider&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Versionando a lib
&lt;/h2&gt;

&lt;p&gt;Existem 3 formas de versionamento, &lt;em&gt;patch&lt;/em&gt;, &lt;em&gt;minor&lt;/em&gt;, &lt;em&gt;major&lt;/em&gt;, cada uma com um propósito diferente. Conforme explicado abaixo.&lt;/p&gt;

&lt;h3&gt;
  
  
  O comando npm version patch
&lt;/h3&gt;

&lt;p&gt;O comando serve para atualizar apenas uma Correção: quando corrigir falhas mantendo compatibilidade.&lt;br&gt;
EX: 0.1.0&lt;br&gt;
Apos o comando 0.1.1&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version patch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  O comando npm version minor
&lt;/h3&gt;

&lt;p&gt;O comando serve para atualizar versão Menor: quando adicionar funcionalidades mantendo compatibilidade, e&lt;br&gt;
EX: 0.1.0&lt;br&gt;
Apos o comando 0.2.0&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version minor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  O comando npm version major
&lt;/h3&gt;

&lt;p&gt;O comando serve para atualizar versão Maior: quando fizer mudanças incompatíveis na API,&lt;br&gt;
EX: 0.1.0&lt;br&gt;
Apos o comando 2.0.0&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version major
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  O comando npm publish
&lt;/h3&gt;

&lt;p&gt;O comando serve para publicar o projeto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Criando um script
&lt;/h3&gt;

&lt;p&gt;Podemos criar um script para rodar na linha de comando e agilizar as coisas.&lt;br&gt;
Adicione na parte de script do packege.json a linha de código &lt;code&gt;"deploy" : "npm version patch &amp;amp;&amp;amp; npm publish"&lt;/code&gt; em seguida rode o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm run deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim enviaremos nosso projeto para o npm&lt;/p&gt;

&lt;h3&gt;
  
  
  Usando nossa lib
&lt;/h3&gt;

&lt;p&gt;Para usar a lib basta instalar ela via npm ou yarn&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install [nome da lib]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Como fazer webscraping em paginas dinâmicas e paginas estaticas</title>
      <dc:creator>Guilherme Freitas</dc:creator>
      <pubDate>Thu, 13 Apr 2023 16:09:21 +0000</pubDate>
      <link>https://forem.com/guiffsouza/como-fazer-webscraping-em-paginas-dinamicas-e-paginas-estaticas-2hj1</link>
      <guid>https://forem.com/guiffsouza/como-fazer-webscraping-em-paginas-dinamicas-e-paginas-estaticas-2hj1</guid>
      <description>&lt;h3&gt;
  
  
  Oque é web scraping
&lt;/h3&gt;

&lt;p&gt;É uma forma de mineração que permite a extração de dados de sites da web convertendo-os em informação estruturada para posterior análise. O tipo mais básico de coleta é o download manual das páginas, copiando e colando o conteúdo, e isso pode ser feito por&lt;/p&gt;

&lt;h3&gt;
  
  
  Diferença entre páginas estáticas e dinâmicas
&lt;/h3&gt;

&lt;p&gt;Primeiro vamos temos que saber diferenciar a pagina que queremos realizar o scraping.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Um site estático é aquele com conteúdo estável, onde cada usuário vê exatamente a mesma coisa em cada página individual.
 &lt;/li&gt;
&lt;li&gt;Um site dinâmico é aquele em que o conteúdo é carregado de forma dinâmica, permitindo que ele mude de acordo com o usuário.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Web scraping em páginas Estáticas
&lt;/h3&gt;

&lt;p&gt;Para realizar um scraping de uma página estática vamos usar uma lib do python muito famosa para esta função que é a beautifulsoup4&lt;/p&gt;

&lt;p&gt;Vamos rodar o comando abaixo para instalar a lib, de preferencia em um ambiente virtual.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip install beautifulsoup4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após realizar a instalação da lib podemos começar a usala, primeiro precisamos do nosso html, para isso usaremos o site do imdb com os melhores 250 filmes &lt;a href="https://www.imdb.com/chart/top/?ref_=nv_mv_250"&gt;https://www.imdb.com/chart/top/?ref_=nv_mv_250&lt;/a&gt;.&lt;br&gt;
 &lt;br&gt;
Usaremos a lib &lt;code&gt;urllib.request&lt;/code&gt; nativa do python para abrir um arquivo html.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from bs4 import BeautifulSoup
from urllib.request import urlopen

html = urlopen("https://www.imdb.com/chart/top/?ref_=nv_mv_250")
bs = BeautifulSoup(html, 'html.parser')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Temos que ve na nossa pagina html qual o valor da tag e da classe css que estão localizado os dados que queremos extrair, no caso dos nossos filmes, estão na tag &lt;code&gt;td&lt;/code&gt; com classe &lt;code&gt;titleColumn&lt;/code&gt;. Passamos esses valores para nos &lt;code&gt;bs.find_all()&lt;/code&gt; e criamos uma lista para armazenar o resultado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;filmes = bs.find_all('td', {'class': 'titleColumn'})

lista_filmes = []
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora é só iterar sobre nossa variavel &lt;code&gt;filmes&lt;/code&gt;, informar para o elemento qual tag desejamos que ele pegue os dados &lt;code&gt;a&lt;/code&gt; e passar o resultado em formato de string para nossa lista.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for filme in filmes:
    item = filme.findChildren("a")
    lista_filmes.append(item[0].text)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos criar um arquivo txt e salvar os nomes dos filmes no mesmo arquivo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;arquivo_txt = open("nomes_filmes.txt", "w")

for filme in lista_filmes:
    arquivo_txt.write(f'{filme}\n')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E assim finalizamos o scraping de uma página html estática.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web scraping em paginas Dinâmicas
&lt;/h3&gt;

&lt;p&gt;Scraping em páginas dinâmicas exigem um pouco mais de complexidade, porém são os meus favoritos.&lt;br&gt;
 &lt;br&gt;
As paginas dinamicas possuem a presença do JavaScript, onde fazem requisições para o backend baseadas nos usuarios.&lt;br&gt;
Sabendo disso, o que podemos fazer para realizar o scraping é simular a inteção humana.&lt;/p&gt;
&lt;h4&gt;
  
  
  Introdução as tecnologias utilizadas
&lt;/h4&gt;

&lt;p&gt;Vamos a uma rápida introdução as tecnologias que usaremos.&lt;/p&gt;
&lt;h5&gt;
  
  
  O Selenium
&lt;/h5&gt;

&lt;p&gt;O selenium tem o objetivo de automazinar a navegação no browser.&lt;br&gt;
É conjunto de ferramentas de código aberto multiplataforma, usado para testar aplicações web pelo browser de forma automatizada.&lt;/p&gt;
&lt;h5&gt;
  
  
  O webdriver
&lt;/h5&gt;

&lt;p&gt;WebDriver é uma API e protocolo que define uma interface de linguagem neutra para controlar o comportamento dos navegadores da web. Cada navegador é apoiado por uma implementação WebDriver específica, chamada de driver.&lt;/p&gt;
&lt;h4&gt;
  
  
  Começando
&lt;/h4&gt;

&lt;p&gt;Nesse tutorial usaremos o Google Chrome.&lt;br&gt;
Primeiro precisamos instalar o webdriver, para isso é necessario que você saiba a versão do seu navegador.&lt;br&gt;
 &lt;br&gt;
Entre nesse &lt;a href="https://chromedriver.chromium.org/"&gt;link&lt;/a&gt; para realizar o download do webdriver.&lt;br&gt;
 &lt;br&gt;
Caso esteja utilizando WSL2 você pode seguir esse &lt;a href="https://www.gregbrisebois.com/posts/chromedriver-in-wsl2/"&gt;tutorial&lt;/a&gt; para instalar o webdriver no WSL2&lt;/p&gt;

&lt;p&gt;Agora precisamos instalar o &lt;code&gt;selenium&lt;/code&gt; de preferencia em um ambiente virtual.&lt;br&gt;
 &lt;br&gt;
Nesse link se encontra a &lt;a href="https://selenium-python.readthedocs.io/installation.html"&gt;Documentação&lt;/a&gt; do seleminum para python.&lt;/p&gt;

&lt;p&gt;Vamos instalar as libs do nosso projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip install selenium
$ pip install webdriver-manager
$ pip install beautifulsoup4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vamos importar os modulos do nosso projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import time
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O site que usaremos como exemplo sera uma tabela com resultados do NBA &lt;a href="https://stats.nba.com/players/traditional/?PerMode=Totals&amp;amp;Season=2019-20&amp;amp;SeasonType=Regular%20Season&amp;amp;sort=PLAYER_NAME&amp;amp;dir=-1"&gt;https://stats.nba.com/players/traditional/?PerMode=Totals&amp;amp;Season=2019-20&amp;amp;SeasonType=Regular%20Season&amp;amp;sort=PLAYER_NAME&amp;amp;dir=-1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Primeiro vamos configurar nosso webdriver.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;install_chrome = ChromeDriverManager().install()
config = Service(install_chrome)
browser = webdriver.Chrome(service=config)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso você não queria que a janela do navegador abra, você pode usar colocar na configuração a opção &lt;code&gt;--headless&lt;/code&gt; conforme está o código abaixo, porem nesse tutorial para fins didaticos usaremos sem essa opção.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;install_chrome = ChromeDriverManager().install()
config = Service(install_chrome)
options = webdriver.ChromeOptions()
options.add_argument("--headless")

browser = webdriver.Chrome(service=config, options=options)

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

&lt;/div&gt;



&lt;p&gt;Agora iremos abrir nosso link do NBA e para um comportamente mais próximo do comportamento humano usaremos o &lt;code&gt;time.sleep(2)&lt;/code&gt; para nosso script esperar 2 segundos antes de ir para o próximo passo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;browser.get("https://stats.nba.com/players/traditional/?PerMode=Totals&amp;amp;Season=2019-20&amp;amp;SeasonType=Regular%20Season&amp;amp;sort=PLAYER_NAME&amp;amp;dir=-1")

time.sleep(2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos executar código javascript no nosso navegador, então vamos realizar uma rolangem de scroll na página.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;browser.execute_script("window.scroll(0, 300)")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para esse tutorial iremos extrair o nome dos jogadores. Para isso iremos pegar o valor xpath da nossa tag &lt;code&gt;tbody&lt;/code&gt;, pois é nela que contem o valor dos resultados.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;element = browser.find_element('xpath', '//*[@id="__next"]/div[2]/div[2]/div[3]/section[2]/div/div[2]/div[3]/table/tbody')

html = element.get_attribute('outerHTML')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora é só passar nossa variavel &lt;code&gt;html&lt;/code&gt; para nossa &lt;code&gt;bs&lt;/code&gt; e gerar nossos dados em um arquivo txt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bs = BeautifulSoup(html, 'html.parser')
nomes = bs.find_all("td", {'class' : 'Crom_text__NpR1_ Crom_primary__EajZu Crom_stickySecondColumn__29Dwf'})

lista_nomes = []

for nome in nomes:
    item = nome.findChildren('a')
    lista_nomes.append(item[0].text)

arquivo_txt = open('nomes_jogadores.txt', "w")

for nome in lista_nomes:
    arquivo_txt.write(f'{nome}\n')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Nesse post vemos como realizar um scraping em dois modelos de páginas, as estáticas e as dinâmicas.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>22 comandos do Git que podem fazer a diferença no dia a dia</title>
      <dc:creator>Guilherme Freitas</dc:creator>
      <pubDate>Tue, 04 Apr 2023 12:55:00 +0000</pubDate>
      <link>https://forem.com/guiffsouza/alguns-comandos-do-git-4il1</link>
      <guid>https://forem.com/guiffsouza/alguns-comandos-do-git-4il1</guid>
      <description>&lt;h3&gt;
  
  
  1. git init
&lt;/h3&gt;

&lt;p&gt;O comando git init ajuda na criação do diretório .git inicial em um projeto novo. A pasta .git se encontra oculta e você deve desabilitar o recurso no caso do Windows para vê-la. No caso do Linux, você pode usar o comando 'll', 'ls -a' ou 'la' para visualizar os diretorios ocultos . É recomendado que ninguém adultere o conteúdo da pasta .git.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git init &amp;lt;nome do repositorio&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. git clone
&lt;/h3&gt;

&lt;p&gt;Este comando é usado para obter um repositório de uma URL existente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone &amp;lt;url do repositorio&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso queira clonar apenas uma branch especifica:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone --branch &amp;lt;nome da branch&amp;gt; &amp;lt;url do repositorio&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Clone um repositorio com todas as branchs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone --mirror &amp;lt;URL_do_repositório&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. git log
&lt;/h3&gt;

&lt;p&gt;O comando “ git log ” lista todos o historico de commits do seu projeto, junto com algumas outras informações sobre como o commit foi feito.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voce também pode usar git log --oneline para reduzir o numero de informações&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git log --oneline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. git config
&lt;/h3&gt;

&lt;p&gt;O comando ajuda a definir os valores de configuração para e-mail, nome de usuário, formatos de arquivo, algoritmo de arquivo preferencial e muitos outros atributos. O exemplo do comando é o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git config --global user.name "Seu nome"
$ git config --global user.email "Seu e-mail"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. git pull
&lt;/h3&gt;

&lt;p&gt;O comando git pull é usado para buscar e baixar conteúdo de repositórios remotos e fazer a atualização imediata ao repositório local para que os conteúdos sejam iguais.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git pull &amp;lt;url do repositorio&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. git status
&lt;/h3&gt;

&lt;p&gt;Informa o status do branch, para saber se existem arquivos modificados.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. git add
&lt;/h3&gt;

&lt;p&gt;O comando 'git add' ajuda a adicionar modificações de arquivo, atualmente no diretório de trabalho para o índice do usuário. O comando ajuda a adicionar arquivos não rastreados que estão prontos para serem confirmados no repositório remoto. O exemplo de uso do comando 'git add' é o seguinte.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git add &amp;lt;meuarquivo&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  8. git commit
&lt;/h3&gt;

&lt;p&gt;O comando git commit captura as alterações atualmente preparadas do projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git commit &amp;lt;nome do arquivo&amp;gt; -m "&amp;lt;informações sobre o commit&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para fazer correção do ultimo commit.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git commit &amp;lt;nome do arquivo&amp;gt; -m "&amp;lt;informações sobre o commit&amp;gt; --amend"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  9. git push
&lt;/h3&gt;

&lt;p&gt;O comando envia todos os objetos locais modificados para o repositório remoto e, em seguida, aumentar suas ramificações.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso queira deletar uma branch remotamente voce pode usar o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git push origin --delete &amp;lt;branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  10. git restore
&lt;/h3&gt;

&lt;p&gt;O comando retorna o arquivo informado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git restore --source &amp;lt;sha do commit&amp;gt; &amp;lt;nome do arquvio&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  11. git checkout
&lt;/h3&gt;

&lt;p&gt;O comando serve para criar uma nova branch.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git checkout -b &amp;lt;nome da branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  12. git switch
&lt;/h3&gt;

&lt;p&gt;O comando muda para a branch informada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git switch &amp;lt;nome da branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  13. git remote
&lt;/h3&gt;

&lt;p&gt;O comando é usado para conectar o repositório git local ao servidor remoto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git remote add &amp;lt;variavel&amp;gt; &amp;lt;link servidor remoto&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode usar para mostrar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git remote show origin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  14. git branch
&lt;/h3&gt;

&lt;p&gt;O comando lista todas as branchs do projeto&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Voce pode usar tambem &lt;code&gt;$ git branch -d&lt;/code&gt; para deletar um branch local&lt;/p&gt;

&lt;h3&gt;
  
  
  15. git rm
&lt;/h3&gt;

&lt;p&gt;Este comando é usado para excluir um arquivo específico do diretório de trabalho atual e preparar a exclusão.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git rmr &amp;lt;nomeDoArquivo&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  16. git merge
&lt;/h3&gt;

&lt;p&gt;O comando faz a união da branch atual com a branch informada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git merge &amp;lt;branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  17. git reset
&lt;/h3&gt;

&lt;p&gt;Caso voce tenha adicionado todos os arquivos ao stage do commit voce pode usar &lt;code&gt;git reset&lt;/code&gt; para remover um arquivo do stage.&lt;br&gt;
Rode um &lt;code&gt;git status&lt;/code&gt; após executar o comando para vê oque aconteceu&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git reset -- &amp;lt;nome_arquivo&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  18. git add -i
&lt;/h3&gt;

&lt;p&gt;Agora caso queira remover mais de um arquivo do stage, você pode usar o &lt;code&gt;git add -i&lt;/code&gt; usar a opção 3: revert que é o valor de revert e&lt;br&gt;
digitar o numero dos arquivos que não quer commitar agora.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git add -i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você pode adicionar ao stage utilizando a opão 4: add untracked&lt;/p&gt;

&lt;h3&gt;
  
  
  19. git reset --soft
&lt;/h3&gt;

&lt;p&gt;Esse comando irá deletar os ultimos commits&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git reset --soft HEAD~[numero de commits]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  20. git reset --hard
&lt;/h3&gt;

&lt;p&gt;Esse comando irá deletar todos os commits&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  21. git fetch
&lt;/h3&gt;

&lt;p&gt;O comando &lt;code&gt;git fetch&lt;/code&gt; irá buscar todas as informações sobre branches e tags do repositório remoto (chamado de "origin" por padrão) e atualizar o seu repositório local com essas informações.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git fetch origin &amp;lt;repositorio git&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  22. git branch -a
&lt;/h3&gt;

&lt;p&gt;Você verá uma lista de todas as branches locais e remotas.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  23. Bônus
&lt;/h3&gt;

&lt;p&gt;Faça um git clone de uma branch especifica e depois suba o commit para branch desejada&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone &amp;lt;URL do Repositório&amp;gt;
cd &amp;lt;Nome do Repositório&amp;gt;
git fetch --all
git branch -a
git checkout &amp;lt;nome-da-branch&amp;gt;
git add &amp;lt;arquivo-a-ser-commitado&amp;gt;
git commig -m &amp;lt;seu commit&amp;gt;
git push origin &amp;lt;nome-branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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