Curso De Guitarra Heavy Metal

City College - Fala Dev, beleza? Mayk Brito na área, e hoje pra gente estudar um pouquinho sobre Git e GitHub, um guia prático pra iniciantes. Vamos criar alguns casos de uso, aonde a gente vai entender o porque do Git, tá legal? Vamos entender os conceitos, como usar, o que é GitHub, porque usar GitHub, isso vai ajudar a gente a desenvolver um pouco melhor a ideia do Git. Vai ser completamente prático, legal? E no meio do código ali eu vou dar uma paradinha, vou dar uma explicadinha no que é cada uma dessas coisas. E pra começarmos, instale o Git na sua máquina se você não tiver instalado. Okay? Vai no site oficial do Git, tá ai git-scm.com/download, e lá você vai seguir o passo a passo lá que eles ensinam pra você instalar o Git na sua máquina ele estando instalado, a gente consegue então começar imediatamente a nossa aula de hoje. E aí, instalou lá? Muito legal, muito bacana, então vamos começar nossos casos de uso, okay? Eu vou começar colocando aqui, aqui no nosso projeto, os casos de uso, vou colocar assim como scenes. Okay? Ã... Você deseja então criar pontos na história da produção do seu projeto, você deseja verificar mudanças feitas no seu projeto. Vamos entender numa maneira bem simples o que é o Git. Você já imaginou você ter o poder de controlar o tempo, de você poder voltar no tempo? ~hehehe~ pois é, com o Git você tem o poder de voltar no tempo. Isso é muito legal. Imagina que o Git é uma linha do tempo na produção do seu projeto, aonde você adiciona pontos, aonde você pode voltar, revisitar esses pontos, no momento que você quiser. Beleza? Isso é muito legal no Git. Então pra começar o Git no projeto, iniciar nossa linha do tempo, a gente usa um "git init". Simples, tá iniciado, ele inicia um repositório. Repositório é um local aonde está sendo guardado, gravado as alterações do seu projeto. Bem tranquilo, né? Então muito bem. A partir do momento que eu vou começar um projeto, vamos supor que aqui eu tenho um projeto de uma landing page. Legal? Minha landing page, vou colocar aqui "landing page finalizada" tá bom? landing page finalizada, e eu quero criar um ponto na história da minha produção aonde eu iniciei essa landing page. Então eu coloco um "git add landing page" o nome do... do arquivo que eu quero. Legal? "git add", assim que eu colocar um git add, eu posso colocar um git commit, sempre passando uma mensagem, ele vai levar essa minha alteração até o meu repositório, ou seja, ele vai criar um ponto na história. E eu vou colocar o nome como, ã.. adicionado landing page. Okay? Landing page. Bacana? Beleza. Agora eu quero dar uma olhada no ponto da história. Até agora eu já matei essa charada aqui. "Você deseja criar pontos na história da produção do seu projeto", já criei um ponto, eu quero ver esse ponto. "git log", o git log vai mostrar pra mim os pontos na história desse projeto. Muito legal, né? Então, tranquilo, eu quero fazer uma alteração agora, na minha landing page, então eu vou colocar "landing page", "landing page" ~"finaliza" eu escrevi~, vou escrever landing page alteração. Beleza? Fiz a alteração. Agora no Git aqui eu tenho um comando bem bacana, o git status, que ele mostra o estado do meu desenvolvimento aqui no git, legal? E ele mostra pra mim algumas coisas, primeira coisa que ele mostra é que eu tenho um arquivo modificado, que foi a minha landing page, tá bom? Daqui a pouquinho a gente vai entender toda essa mensagem. Mas por enquanto, eu tenho um arquivo modificado que é a minha landing page, e eu tenho um arquivo que não está sendo observado pelo Git. Tá? Ou melhor, observado tá sendo, mas ele não está no histórico do Git. Okay? Caso eu queira chamar esse arquivo depois mais pra frente, revisitar esse arquivo, ele não está adicionado na minha linha do tempo. Pra gente entender como que funciona esses pontos na história, o Git ele vai, ele não vai pegar você já percebeu que ele não vai pegar qualquer arquivo que ele quiser, a gente precisa avisar pra ele qual arquivo colocar nesse ponto da história, qual arquivo enviar lá pro repositório. Tá? O comando do commit vai sempre enviar arquivos pra lá, "mas quais arquivos, Maykão?" esses arquivos que a gente adicionou com git add, tá? Nesse momento que a gente coloca o git add, a gente tá colocando esse arquivo numa área especial, aonde o Git consegue observar aquilo quando é feito o commit, legal? Então como o read me não está nessa área especial, mas a landing está, né, então o read me não vai para o meu ponto na história, mas a landing vai. "Agora ela vai Maykão?" Agora não, porque eu não adicionei ela num novo ponto. Legal, então pra eu adicionar novamente, essa atualização da landing page, eu coloco novamente o git add landing page, e depois um git commit, pra aí criar esse ponto na história. ou, enviar esse arquivo para o repositório. Legal? upda-- updated, landing page. Tá? Então, criei mais um ponto na história com a minha landing page atualizada. Legal? Eu não sei nem se eu tinha salvado a minha landing page, mas vamos dar uma olhada no nosso git status pra ver se ela ainda tá ali. Bom, não está, então deu certo. Muuuito bem, eu posso então, ã... eu posso então revisitar ou verificar as mudanças feitas no meu projeto com o git log. O git log então mostra que foram feitas duas mudanças, veja bem que eu tenho que sempre avisar o Git sobre essas mudanças. Ele consegue observar tudo a partir do git init, mas eu preciso adicionar os pontos na história, que foram dois até aqui. Beleza? A partir do momento que eu adicionei os pontos na história, eu consigo revisitar esses pontos, e observar o que foram feitos neles. Eu posso então copiar essa... esse commit, beleza? E eu posso usar um git show, colocando o número do commit, e aqui ele vai mostrar que o meu... a minha landing page, ok? Antigamente era nada, depois ela virou uma landing page em si, e com esse conteúdo. Legal? E se eu quiser ver o último ponto na história, eu posso colocar só git show, sem número nenhum, ele mostra pra mim o último ponto na história, e o último ponto foi aonde ele tirou o "landing page finaliza", pra colocar "landing page alteração". Percebe que o Git também ele tirou a linha toda e adicionou a linha toda. Tá bom? Porque o git sempre vai trabalhar por linhas. Show de bola, legal, matamos essa charada também, mas temos mais, não acabou por aí. Nós vamos ter outros desafios aqui também. Bom, então você começa uma nova funcionalidade no seu projeto, sem estragar o que já foi feito. Legal, então sua landing page está pronta, tá legal, né? Tá muito bacana, e você precisa começar uma outra versão do seu projeto. Puxa, se você já tem o poder de controlar o tempo e voltar no tempo, agora você tem o poder de criar universos paralelos. "Hmm, que legal Maykão, como assim?" Sim, cara, você pode usar o poder da branch no Git. Branch, significa "ramificação", então, enquanto você está na master, na ramificação principal, na linha do tempo principal, você pode criar linha do tempo alternativa, legal? A partir da branch. Então 'git branch', você pode colocar um nome pra essa branch do tipo 'cart', vamos supor, tá? eu vou colocar assim ó, 'feature cart' vamos supor que se-- seu cliente pediu pra você adicionar um carrinho de compras, então é a nova funcionalidade do seu projeto, e você não vai estragar o que já foi feito, tá bom? a landing page ela continua lá, e você vai criar uma branch nova. Então pra você mudar para essa branch, você pode usar um "checkout" "checkout" e o nome da branch, 'feature cart'. Pronto. Aqui no meu terminal, já apareceu que eu estou na feature cart, mas pra garantir eu posso usar o git status, ele mostra pra mim que eu estou na branch 'feature cart'. Legal, então to numa linha do tempo alternativa, e nessa linha do tempo alternativa, eu vou criar o meu cart.html, okay? E aqui no meu cart.html, eu vou simplesmente adicionar uma mensagem aqui "carrinho" produzindo, ~vou colocar assim ó~, produzindo, ele não tá pronto ainda, tá bom? Estamos produzindo o nosso carrinho. "Bacana Maykão, mas, então você tá me dizendo que eu tenho duas linhas do tempo agora?" Sim, temos duas linhas do tempo, nós podemos voltar pra linha do tempo principal usando o 'git checkout master', legal? E nós podemos olhar todas as nossas linhas do tempo usando um git branch. Então ele mostra aqui pra mim duas linhas do tempo: a master, que é a principal, que ele sempre vai seguir por ali, geralmente a master é onde vai estar o nosso projeto em produção, e a feature cart. Legal? Então vou voltar pra minha branch checkout feature/cart, tá, e aqui nela depois do status, ela me avisa que eu tenho um carrinho, e aí ele-- esse carrinho ainda não foi adicionado, não foi criado um ponto na história pra adicionar esse meu carrinho. Tá bom? Ou, mesmo até a read me, né? Que a gente tá mexendo nele sem adicionar ele na nossa história. Muito bem, o carrinho eu quero adicionar na história, então 'git add' 'cart.html'. Tranquilo? E git commit, você já aprendeu, sempre passando uma mensagem, e aqui, "added cart" okay? Criei esse ponto na história agora, git log added cart. Tá bom? E perceba que ele tá pegando também o outro ponto da história, da master, legal? Bacana? Então eu quero voltar pra master, checkout, pra master, 'ls -al', eu não tenho aqui realmente o carrinho, percebe? Percebe que eu não alterei a minha linha do tempo principal, então eu comecei uma nova funcionalidade do meu projeto sem estragar o que já foi feito, olha que bacana. E eu poderia tranquilamente estar usando essa landing page e tal, sem problema algum, sem estragar, e enquanto isso, eu to lá na minha... lá na minha linha do tempo do carrinho, e alterando meu carrinho, tudo legal né, vamos atualizar aqui, carrinho já aparece, e produzindo né, produzindo.. ~vou colocar assim~ carrinho pronto, carrinho finalizado. Legal? Estou arrumando ele aqui, vou adicionar ele na minha linha, com git add e git commit dando a mensagem né, cart ok, ~vou colocar assim, ok?~ legal, e um git checkout, vou voltar pra master, e na master a gente dá uma olhadinha nas nossas coisas, não temos o carrinho aqui né, porque não tá atualizando aqui. Mas não tem aqui o carrinho, legal, então tá dando certinho a ideia, beleza? Muito bem, agora eu adiciono as novas funcionalidades ao meu projeto em produção. Hmmm... como é que é que eu vou unir linhas do tempo agora? Então eu posso unir aquela linha do tempo paralela a essa linha do tempo principal, usando um 'git merge', 'git merge', eu chamo o nome da minha branch, que era feature cart, lembra? Pronto, eu trouxe agora o carrinho aqui pra dentro, vou só atualizar, e tá aqui o meu carrinho, ele está na minha master agora. Vou dar um status, e você vai ver que eu estou na branch master, e o carrinho está adicionado aqui ~opa, clear~ vou lembrando do meu git log, eu posso dar uma olhada, cart, ok, ele trouxe pra minha master, tá vendo? E ele fala que eu uni as branches. Muito legal, posso dar aquele meu git show padrão, no git show, ele vai ver que eu mudei né do carrinho produzindo pra finalizado, pronto. Matei mais outra charada aqui. E agora, você quer deletar a branch da nova funcionalidade, depois de aplicar em seu projeto. Bacana, então vou deletar a minha branch feature, ã... cart. Então 'branch -D feature', 'feature/cart'. Deletada. Se eu listar as minhas branches, eu só tenho a master agora. Então tá limpinho, já resolvi também esta questão. Então, vamos dar uma pequena revisada no que vimos até agora. Vimos sobre git init, que vai iniciar a nossa linha do tempo, nós entendemos que o Git nos ajuda a controlar uma linha do tempo, o histórico do nosso projeto né, adicionando pontos na história, vimos que o git add adiciona ou atualiza uma mudança, pra ir pra linha do tempo, quando a gente criar o ponto na história com o git commit, nós então, ã... colocamos essas mudanças é... que fizemos ali, adicionando com add e tal, na nossa linha do tempo, vimos o git log, que conseguimos visualizar os pontos na linha do tempo, né? dos.. os.. pontos, os commits, certo? Vimos o git status, que informa o estado da alteração do nosso projeto, então toda vez que a gente cria uma alteração no projeto que estamos trabalhando, o git status mostra pra gente se aquele, se foi um arquivo novo, se foi um arquivo deletado, se o arquivo está pronto pra ir pra linha do tempo ou não, legal? Vimos também, o git show, que apresenta o determinado ponto da história pra gente. Bacana? Então vamos para o próximo item do nosso... do nosso caso de uso, e, esse caso de uso, você quer colocar seu projeto na nuvem. "Como que eu faço isso, Maykão? Como que eu coloco o meu projeto na nuvem?" Finalmente chegou a hora da gente entender o que é o GitHub. O GitHub é um repositório remoto, legal? Então tudo que a gente criou lá na nossa linha do tempo, tudo que a gente fez no nosso repositório local, a gente pode enviar para o GitHub, e lá no GitHub nós teremos então nosso código. Funciona da seguinte forma, você vai criar a sua conta no GitHub, okay? Eu já vou entrar na minha, 'sign in', legal, ã? E aqui então a gente tem uma interfacezinha, a gente pode ir nesse + aqui no cantinho, pra criar um novo repositório, ou a gente pode clicar nesse botão aqui. "Maykão, eu já tinha criado o repositório local, eu não tava mexendo aqui na.. no meu... no meu trabalho e tudo, com o repositório?" Sim, mas a gente precisa criar esse repositório remoto, tá? Esse aqui é o nosso local, e o Git é o nosso repositório remoto, lembra? Então eu vou entrar aqui, é... eu já tinha um repositório com a aula git, mas então eu vou colocar 'aula git' 1 Legal? E então eu posso colocar o nome do repositório, uma descrição pra ele, defino se o repositório é público ou privado, tá? Nesse caso eu vou fazer ele privado, e eu posso inicializar esse repositório com o read me, mas como eu já estou usando um read me no meu repositório local, eu não vou iniciar com o read me, tá? E vou criar então esse repositório. Bacana? Ele dá pra mim uma seriezinha de comandos, caso a gente não tivesse feito o git init, git add, git commit, viu? Do mesmo jeitinho que a gente trabalhou até agora, mas a gente já fez isso, então, git remote add origin, passando o link. Então vamos lá? Vamos criar isso daqui, e aqui eu coloco "git remote add origin", "origin" e o meu é o aula git 1. Bacana? Adiciono, ele já está aí, eu posso colocar um git remote -v, pra ver os meus repositórios remotos, e posso dar o meu primeiro 'git push'. 'git push' é o carinha então que vai empurrar o nosso repositório local para o repositório online. Nesse caso, como é a primeira vez, ele fala que eu preciso criar a branch master no repositório online, através do 'git push -u origin master'. Então aqui, git push -u origin master, bacana? Meu nome, minha senha, e é então, ã... nesse caso como eu ja tinha colocado um pouquinho antes, ele fala que já tá tudo certo, já foi enviado. Legal? Então vamos dar uma olhadinha no nosso repositório na nuvem. Nosso repositório na nuvem. Ahhh, ele tá aqui ó, cart e landing page. "Maykão, mas você falou, e o read me, e o read me? Cadê o read me?" ~hehe~, bom, legal, se você me acompanhou bacana até aqui, você percebe que o read me com o nosso git status, o read me até agora ele não foi colocado na nossa linha do tempo, ok? Então ele não existe na nossa linha do tempo, mas já matamos essa charada, você quer colocar o seu projeto na nuvem. Bacana? Então, agora pra gente dar até aquela outra fixada, git add, agora eu vou adicionar o meu read me, tá? Eu posso usar um comando curto aqui, que eu vou usar ele algumas vezes, git add "pontinho" ~hehe~ o pontinho vai adicionar tudo, todas as alterações, todas as coisas que tiverem aqui na minha pasta. Então, pra gente entender legal esse pontinho, vamos fazer o seguinte: já entendemos que o read me não tá lá, a landing ela está nesse... nesse estado aqui, landing page alteração, então vou colocar landing page alteração, bacana? E agora sim git add com pontinho, e git commit -m, agora vou colocar added car-- added read me e update landing. Tá bom? Vou colocar essa mensagem, só pra recaptular, já sabemos que esse commit está na nossa máquina local, legal? Tá aqui. Então, eu vou 'push', vou colocar ele na nossa nuvem, beleza? Agora eu não preciso passar isso, já criou lá a minha linha do tempo master. Então, git push, e foi. Fica um pouco incômodo a gente ficar colocando nosso nome e email aqui no Git, então eu vou te dar uma diquinha: git config credential hel- helper, tá, credential.helper store e aí então a gente... todas as vezes que a gente colocar agora na nuvem, não precisamos nos preocupar em colocar login e senha. Tá bom? Ele já pega aí porque eu coloquei da última vez. Bacana, então voltando no nosso... na nossa... nuvem, tá, nosso GitHub, eu posso dar um reload e aí veio agora sim o meu read me, okay? Do jeitinho que a gente tá fazendo, e a minha landing page, olha só a mensagem que ele já mostra aqui, ó: foi aquela mensagem que a gente colocou no nosso commit, né? "landing page, veio alteração 1. Lembra que ela pegou porque eu coloquei aquele git add 'pontinho' Bacana? Legal, então voltando aqui a gente consegue perceber que o GitHub ele é um pouco mais visual, tá? Pra... pra se... pra essas coisas de log que eu coloquei e tudo mais, por exemplo se eu entrar clicando aqui, ele vai me mostrar aquele git show, lembra o git show que eu te falei? Então, ele vai mostrar de uma maneira mais visual né? As alterações e as coisas que fizemos. É bem mais interessante ver aqui do que ver lá na.. no terminal, né? Beleza, eu posso também navegar nos outros commits que eu já fiz, ó a linha do tempo, você viu que -- você até percebeu que é um reloginho né? Então ó o controle do tempo aqui. Então você consegue ver aqui como uma linha do tempo, os commits que você deu. Eu dei aqui esses commits nesse dia, nesse dia, esse, bacana? E então eu tenho aí como navegar em todos esses commits. Olha aí. Olhando todas as alterações no ponto da minha história. Bacana? Então tá bom. Então a gente matou mais uma questão aqui, e vamos também, e vamos também, pra mais outra questão. Aii percebi aqui que eu não coloquei também outras coisas aqui na nossa revisão, que a gente vai fazer agora. Então, ã... git branch, já vimos também, ele gerencia novas linhas do tempo, legal? Ele pode deletar, como a gente viu, ele pode adicionar, show? git checkout ele vai manipular ali as linhas do tempo, a gente consegue pular de uma linha do tempo pra outra, git merge ele vai unir as linhas do tempo, e o git push que a gente viu agora, ele vai enviar alterações locais para o repositório remoto. Bacana? Então vamos pra outro desafio, como eu falei, esse outro desafio vai ser o seguinte, você vai pegar um projeto já iniciado, para trabalhar com o time, e você precisa resolver um conflito. Hmmmmmmm interessante, como que eu vou pegar um projeto já iniciado? Então a gente volta no nosso GitHub, tá, e no GitHub a gente pode pegar algum projeto, eu vou pegar algum projeto que eu tenho aqui, só pra gente... vou pegar esse daqui. Pronto. Eu vou puxar esse projeto aqui, posso usar esse botãozinho aqui, ele vai me dar aqui o link, eu copio o link, ok? Volto para o meu repositório local, e eu posso dar um git clone e colocando o link que eu quero. Dessa forma, eu já vou pegar um projeto já iniciado, pra trabalhar com o time, já sei pegar o projeto. Bacana, é o git clone. Então , git clone, eu vou dar um... um... ls -al, eu tenho agora uma pastinha nova, tá? Ele veio com a pastinha, com o nome do meu --- da minha pastinha que eu criei lá no Git. Legal, se eu atualizar aqui eu vejo ela, vou entrar nela, Instagram profile, clear, beleza. Aqui eu tenho os meus arquivos. Legal? Posso dar um git status, ele vai tar limpinho, sem nenhuma alteração, e aqui então eu preciso resolver o conflito. Primeiro eu vou criar um conflito, né? Então eu vou criar uma linha do tempo nova, e mudar pra essa linha do tempo. né? Então eu posso usar já a palavrinha do git branch né que você já sabe, eu vou criar uma branch nova e mudar para essa branch. Tranquilo. Eu posso usar um comando curto, checkout -b que é o ... é a branch, né? E eu vou colocar assim, teste. Qualquer coisa, tá bom? -b teste, então ele vai criar uma branch chamada teste e já vai fazer o checkout, já vai mudar pra essa branch. Vamos lá? ó lá, branch teste. Legal? Eu vou pegar então dessa branch teste, vou pegar aqui de--- que arquivo? Eu vou pegar esse package.json mesmo, tá? vou abrir ele aqui, package.json, só pra fazer uma alteração simples, eu vou tirar essa linha de description, tá? Vou remover ela daqui, beleza? E vou salvar. bacana, então no meu git status agora, clear, git status, então eu tenho aqui, ele tá me avisando que eu tenho um arquivo modificado. Ã... Lembra que eu te falei que eu ia te ajudar a ler essa linha? Vamos dar uma lidinha nela agora? Agora a gente já consegue, né? Você está na branch teste. Tranquilo, branch, você já sabe que é a ramificação, então você tá na ramificação, você ta na linha alternativa teste, e você tem mudanças que não estão prontas para o commit, legal? Então lembra o que eu te falei, que antes de você adicionar o git commit você precisa colocar o git add que ele vai preparar aquele arquivo para adicionar aquele ponto na história. Então é isso que o git status tá te dizendo aqui, que você, ã... apesar de você ter mudado o package.json, ele não tá preparado para o git commit, ele não tá preparado para o ponto na história. Então ele tá modificado, mas você não avisou o git que você quer essa modificiação lá. então, git add, já entendeu né, como aqui eu to mudando só ele eu posso colocar o pontinho numa boa, ou eu posso usar esse comando... um outro comandinho curto, tá? Que é o git commit -a que é como se fosse pra atualizar isso daqui, tá bom? Como se fosse esse add aqui. Tá bom? E 'm' a mensagem, e aí então vou colocar update package.json. Legal? Fiz o commit, já está na minha branch teste, né? E eu posso então voltar para a minha branch master, legal. To na branch master. Na branch master, eu vou então simular o conflito, né? Eu vou chegar no meu package.json e vou adicionar alguma coisa nessa linha. Então vamos lá. Eu te falei que o Git trabalha por linhas, então eu estou alterando a mesma linha que eu apaguei lá no teste, não é isso? Então, alterando. Okay? Bacana, git status, eu preciso adicionar isso para o próximo commit, então, vou adicionar essa mudança, git add, tudo, pode ser aqui, não tem problema, ou só o package json, tá? Okay, agora sim, git commit, -m, package.. qualquer coisa, tá bom? Só pra gente entender. Agora sim, vou unir minhas linhas do tempo e vamos ver o que vai acontecer. Ooolha que legal, conflito! Então arrume os conflitos para que você possa conseguir 'commitar' então, o conflito tá aqui na minha package json, olha que que o git fez pra mim. Tá? É... claro, com o Visual Studio é uma mão na roda, eu posso só aceitar as mudanças que estão vindo, manter a mudança atual, aceitar as duas, e comparar, então, se você não tem o Visual Studio, você teria que só resolver qual das duas que você quer. Você quer a description que você colocou alterando, ou você quer que não tenha nada que veio do teste, né? Se você usa o Visual Studio, você pode só aceitar essa daqui por exemplo, então "aceito". Ele já faz sozinho pra você. Se você quer aceitar o que veio lá da branch, de teste, então você pode aceitar da branch de teste, então tranquilo, ou então você pode aceitar os dois e aqui você resolve o que vai ser, mas como era uma linha só vazia ele já apagou a linha, tá bom? E é bem tranquilo, assim que você consegue resolver conflitos, no caso eu vou aceitar o atual, alterando, ~hehe~ tá legal? Vou aceitar ele e tá tudo bem, posso salvar o arquivo, vamos lá, clear, limpei ali, vou só dar o git status, e ele fala pra mim que não foi emergeado, não deu certo, né? Por que eu tinha que ter resolvido o confllito. A partir do momento que eu resolvi o conflito, eu vou adicionar esse package.json que tá resolvido o conflito. Posso fazer assim, ou posso fazer direto o commit porque nesse caso eu não quero só adicionar, já quero 'commitar' de uma vez. 'conflict resolved' alguma coisa assim. Pronto. Resolvido o conflito, git status, tá limpinha a minha branch, tá tudo legal. Posso usar meu git log para verificar que deu tudo certo, beleza? Lembrando que ele traz toooodo o log de tuuudo que eu já fiz uma outra vez, naquele projeto. Tá? Não só esse do local porque ele trouxe o projeto da nuvem. Bom, legal, aqui eu já resolvi mais outra questão que é precisar, é... a gente precisa resolver o conflito, mas a gente tem uma outra questão interessante, beleza? Que a gente precisa é.. antes de enviar a resolução, a resolução, precisamos atualizar o projeto local. Tá? Essa vai ser a outra questão. E essa questão a gente vai resolver da seguinte forma, eu vou só simular com que... outra pessoa tivesse alterado pra mim esse projeto lá na nuvem, então vou voltar pra nuvem, nesse projeto eu vou só dar uma alteradinha aqui na minha read me, então aqui eu vou remover essas três linhas, okay? e aí vou dar o commit, então isso ele tá exatamente fazendo a... aquela ideia do commit, adicionando a linha do tempo, né? Adicionando um ponto na linha do tempo, to fazendo aqui pelo GitHub só para ser didático, legal? Volto pra cá e aqui então eu vou dar um git pull. 'git pull' é o comando que vai então puxar atualizações que tem lá na sua nuvem, então imagina que você tá trabalhando com um time, alguém, algum colega seu, ele alterou na máquina dele e enviou, né, git push, ele enviou lá para o repositório remoto. Quando ele enviou pra lá, você precisa atualizar o seu repositório antes de enviar, porque se não você já tá criando conflitos, né? Você não sabe o que que é que mudou lá ou deixou de mudar. Beleza? E aí então ele trouxe pra mim as alterações. Vamos ver quais alterações foram na.. na read me desse cara aqui. Bacana. Sem a linhazinha aqui, né? Então, show de bola, ele trouxe pra mim atualizado, removeu as linhas que eu tinha ali. Então, comandinho git pull, a gente resolveu essa questão também. Uma vez que a gente fez o git pull, nós podemos então fazer o git push, enviando as nossas atualizações. Não vou fazer isso, mas então eu vou te ensinar uma outra coisa, você precisa voltar um arquivo para um determinado determinado momento da linha do tempo. Bacana? Essa questão é, nós precisamos voltar um arquivo para um determinado momento da linha do tempo. Que arquivo é esse ? Eu não quero, é... estragar esse cara aqui que eu mudei e tal eu preciso voltar o package.json para um determinado momento, eu já fiz meu checkout e tal, Bom, qual o momento que é? Primeiro eu preciso descobrir o momento, com o git log, eu vou descobrir qual o momento que eu quero voltar. Se aqui na teste foi onde eu fiz o pedi-- o update dele, provavelmente ele tá nessa diferença aqui. Eu posso então, sabendo que é ali, aquele momento né, eu já sei que é aquele momento, da package.json, que eu preciso resol-- é... resgatar, posso usar um git checkout, lembra que o git checkout ele faz então, é... a transição, lembra que eu te falei que ele vai manipular a linha do tempo? Então eu posso usar o git checkout passando aquele ponto da linha do tempo e aí eu peço pra ele recuperar a package.json " - - package.json". Legal? Então, ele vai trazer de volta a package.json, daquela linha do tempo, ó. Já tirou tudo aqui, já tá tudo legal. Dando aquele git status, eu posso ver que a package.json foi modificada, ela ainda não foi enviada. Legal? "Maykão, entendi. Matou a charada." Uhum, matamos a charada, resolvemos essa daí. Tá bom? E aqui, lembrando que eu preciso adicionar o arquivo package.json, mas posso jogar direto no commit se eu for fazer o commit, beleza? Vou fazer o commit, ã... restore package Show? git status, tudo limpinho, eu posso, lembrando, sempre atualizar o meu local, é, ninguém mudou nada lá em cima mesmo, então tá tudo certo, então dá um git push pra enviar para o repositório remoto. Não vou enviar nada, né? To fazendo muita bagunça, já nem sei o que eu to fazendo aqui, de tanta bagunça. Legal? Então aprendemos mais dois comandos aqui, que é um lance da gente clonar um repositório, né? remoto, pegar um repositório que já começou e tudo mais, colocar na nossa máquina, clonar um projeto, né? um projeto. Já sabe clonar um projeto. Repositório. Já sabe fazer isso, e a gente também sabe é... atualizar o nosso projeto local com né, puxar do repositório remoto, atualizando o local, antes de enviar né, antes de colocar o push, colocar ele lá, lá pra cima. Aprendemos também com o git checkout a recuperar um certo momento na linha do tempo, né? Um certo arquivo específico, da linha do tempo. Bacana? E agora, o último eu acho que só pra gente até fixar melhor essa ideia de recuperação, vou colocar que você precisa recuperar algo deletado, tá? Algo deletado. É... vamos supor que aqui nesse projeto aqui que eu to mexendo, eu vou deletar a... vou deletar o "webpack.config". Tá? "Move to trash". Beleza. Deletei. Deletei, vamos só dar aquele nosso ls -al pra ver se deletou mesmo, né? Ele não tá aí, só que, o Git, com o git status, ele vai me avisar uma coisa, git status, ele falou que eu deletei o arquivo mas eu não adicionei ele no ponto na história, então só aqui eu já consigo recuperar esse arquivo deletado, só dando um checkout e se eu não passar nada aqui antes dele, nenhum ponto na história, ele vai pegar o ponto na história atual e eu posso chamar o webpack, já nem lembro o nome do arquivo, né? Deixa eu dar um status aqui, que vai me mostrar o nome do arquivo. "webpack.config.js" beleza. Agora sim, ~hehehe~ eu não lembrava o nome do arquivo. Então assim, git checkout, - -, não passei nenhum ponto na história então ele vai pegar o ponto, o último ponto que ele lembra. E "webpack.config". Então aqui, só com isso daqui eu já restauro esse cara aqui do último momento, legal? Mas vamos supor que eu apaguei, apaguei e criei o ponto na história. Então "git commit -am" ã... "delete webpack" de fato agora ele tá deletado, eu não consigo fazer um checkout do webpack, porque ele vai falar "não tem" né, "não tem como fazer, isso daqui não tem, não tá no repositório, não existe". Beleza? Eu só to relembrando que é possível a gente usar o ponto na história para trazer de volta o arquivo. Aqui, ele existia, nesse ponto ele existia, então eu vou copiar esse ponto, vou dar o git checkout, só lembrando, só colocar ele aqui, - - , webpack.config.js. Pronto, é só isso. Posso atualizar aqui, ele veio de volta. Beleza? Então recuperei algo deletado, porque uma vez que ele foi, ele ficou no ponto da história, poderia passar o tempo que for, eu poderia puxar ele de volta daquele ponto na história. Bacana? Então é assim que funciona a ideia do Git, pra você manipular tempo. A gente tem diversos casos de uso, cada comando desse daqui tem muitas possibilidades, legal? Mas pro básico já dá pra você fazer um monte de coisa com Git, só sabendo isso. Só entendendo esse básico do Git. Legal? Eu espero que daqui pra frente você começe a usar Git em todos os seus projetos, e você vai agradecer a gente daqui um tempo. Tá bom? Por tar usando sempre o Git nos seus projetos. Então é isso, continue estudando, bora pra cima, e um abração do Maykão!.

Curso de guitarra heavy metal decoracao de festa infantil em bh venda nova Itajaí curso acupuntura uruguay. Distrito Federal estrela artigos militares salvador Outros tipos, agora eu passo cursos online Crítica Literária/Filme, toef exam Crítica Literária/Filme, caed cursos ufjf Trabalhos Matemáticos. Monografias juridicas temas upf cursos valores curso de guitarra heavy metal Natal como fazer resumo de artigo pronto. Cultura organizacional e lideranca schein edgar h Discurso/Apresentação Patos decoracao de quarto bebe azul, artigo cientifico folclore brasileiro.

Jequié:

Alison Baxter, Yates County: Elmira College. Viamão: Liberal Studies; 2011.

Edgar Williamson, Albany. Barueri: Baruch College; 2016.

Stephen Lucas, 2nd Avenue zip 10028. Pindamonhangaba: St. Lawrence University, Canton; 2019.

inserted by FC2 system