Introdução à CLI do GitButler

GGitButler
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Olá a todos. Meu nome é Scott Chacone e sou o CEO do Git Brother.
00:00:02Vou fazer uma demonstração rápida da nova CLI do Git Brother.
00:00:06Então, se você está familiarizado com a linha de comando,
00:00:08e quer usar o Git Brother de forma programática,
00:00:11a nova CLI do Git Brother é uma excelente ferramenta.
00:00:14Vamos começar. Certo, vamos iniciar com um repositório.
00:00:18Eu tenho este pequeno projeto em Rust,
00:00:20e vamos percorrer o fluxo de trabalho da CLI do Git Brother.
00:00:23Ela é basicamente um substituto direto para o Git. Após instalada,
00:00:27você terá o comando "but". Essa será sua interface principal em vez do Git.
00:00:32Você pode rodar "but" ou "but status", que é o atalho para isso.
00:00:35E ele mostrará o status atual.
00:00:38A saída é bem parecida com a do "git status".
00:00:41Vemos que existem quatro arquivos modificados.
00:00:44Alguns não rastreados e outros que foram alterados.
00:00:47Há arquivos novos e modificados, mas a saída do "but",
00:00:50no status, mostrará apenas uma lista de quatro. São as mudanças, certo?
00:00:55São as coisas que você alterou. E você pode fazer o commit delas
00:00:59da forma que preferir. O que faremos é apenas rodar "but commit".
00:01:02Isso criará um branch temporário. Vamos testar.
00:01:05Se rodarmos "but status" de novo, veremos que todas as mudanças estão em um só lugar.
00:01:11Também podemos rodar "but status -f" ou "--files".
00:01:15Isso mostrará os arquivos que foram modificados neste commit.
00:01:18Mas digamos que não queiramos colocar tudo em um único commit, certo?
00:01:21Algumas coisas são relacionadas ao Clod, uma é o readme...
00:01:24outras são mudanças no código. São três mudanças distintas, certo?
00:01:28Então queremos três commits separados. Vamos desfazer isso.
00:01:31Podemos desfazer um commit rodando
00:01:36"uncommit". E voltamos ao início. Ainda temos esse branch temporário aqui.
00:01:40Podemos excluí-lo se quisermos, mas vamos apenas reutilizá-lo.
00:01:44Vou renomear. Vou chamar o branch de "Clod stuff".
00:01:48Agora tenho um novo branch aqui e posso indexar as coisas nele,
00:01:53tipo o "git add". Podemos dizer: "but stage G0 e H0".
00:01:58Estes são os códigos curtos para eles.
00:02:01Você também pode digitar o caminho completo se quiser,
00:02:04mas tentamos facilitar para que seja rápido. Agora, se eu olhar,
00:02:08esses arquivos estão no branch "Clod stuff" e posso fazer o commit com "-o",
00:02:12que significa apenas o que está indexado. Se eu rodar "commit",
00:02:15ele commitará tudo o que está no stage e o que não está.
00:02:18Isso fará mais sentido quando tivermos mais branches,
00:02:20mas vamos commitar isso. Agora temos um branch com um commit
00:02:25e algumas alterações não indexadas.
00:02:28Aqui é onde fica interessante porque, diferentemente do Git,
00:02:31digamos que eu queira pegar este README,
00:02:34commitar e subir para abrir um PR.
00:02:37Normalmente, se eu estivesse no branch "Clod" aqui,
00:02:41eu teria que fazer um stash, adicionar o README, commitar
00:02:44e fazer o push para o pull request.
00:02:45Mas no Git Brother, podemos ter branches paralelos.
00:02:50Posso dar um "but branch new as readme" e vejam que tenho um novo branch
00:02:55que surge paralelamente, e posso indexar aquele arquivo.
00:03:00Posso fazer o commit desse arquivo.
00:03:01Se eu olhar os arquivos alterados, viram?
00:03:07Tenho este commit com as duas coisas do Clod.
00:03:09Tenho este README com a alteração do arquivo. Novamente,
00:03:11posso fazer a mesma coisa. Posso usar o commit
00:03:17com "-c" para criar, assim crio um novo branch e digo, vejamos...
00:03:21o que mudamos aqui? Eu já tinha esquecido. Ah,
00:03:25este comando "read". Certo.
00:03:27E isso pegará a última coisa não commitada ou qualquer pendência
00:03:32neste ponto, permitindo criar um novo branch e commitar nele.
00:03:35Agora vemos que temos três branches.
00:03:38Eles são independentes entre si.
00:03:39Todas essas mudanças continuam no nosso diretório de trabalho.
00:03:42Não alteramos o diretório de trabalho em nada.
00:03:44Estamos apenas criando commits em memória.
00:03:46Agora posso rodar "but push" e ele perguntará: o que você quer subir?
00:03:50Quer subir todos? Cada um tem um commit pendente.
00:03:53Quer subir só um? Vamos subir apenas o README.
00:03:57Digamos que seja o único que consideramos pronto agora.
00:03:59Basta selecioná-lo e ele fará o push.
00:04:02Se olharmos o status novamente,
00:04:03veremos que este foi enviado, indicado pelo status aqui.
00:04:06Os outros são apenas locais.
00:04:08O Git Brother é muito potente para trabalhar com vários branches simultâneos.
00:04:11Mas ele também suporta branches empilhados (stacked).
00:04:13Vejamos um exemplo de como criar algo novo
00:04:17com base em um dos commits que já fizemos,
00:04:19criando um branch empilhado a partir dele.
00:04:20Assim, podemos mesclar o de baixo e continuar trabalhando no de cima.
00:04:23Digamos que queiramos criar um branch empilhado.
00:04:26Queremos que este comando "read" seja revisado e aceito,
00:04:30mas queremos continuar trabalhando nele.
00:04:32Este é o caso ideal para um branch empilhado em vez de um independente,
00:04:35porque existe uma dependência. Fazemos assim:
00:04:38"but branch new -a" como ponto de ancoragem,
00:04:42que é este comando "SC read". E chamamos de "SC read more".
00:04:46Agora, ao olhar para isso,
00:04:48vemos que temos este branch empilhado no topo.
00:04:50Vamos editar isso.
00:04:52Vemos que ele pega 10 mensagens e as exibe.
00:04:57Vamos mudar para 20 mensagens. E alteraremos isto também.
00:05:02Vemos que temos essa mudança e há um ícone de cadeado porque
00:05:09estamos alterando um arquivo que já foi commitado em outro lugar.
00:05:11Então ele está travado em um commit específico.
00:05:13Só podemos commitar em cima deste porque altera código introduzido lá.
00:05:16Podemos ver o que mudou com o comando "diff",
00:05:20que é uma ótima forma de ver as partes alteradas, e podemos
00:05:25fazer o commit. Certo.
00:05:28Para ver como é fácil mover os commits de um lado para o outro,
00:05:32vou mostrar como fazer o seguinte,
00:05:33usaremos "status -f" para ver todos os arquivos.
00:05:37Vamos compartilhar isso. Já vimos o "push",
00:05:40que envia para o seu repositório remoto,
00:05:42mas também temos o comando "PR", que abre um pull request. Podemos dizer:
00:05:46quais destes queremos transformar em pull requests?
00:05:48Vamos abrir pull requests para todos eles.
00:05:50Ele abrirá um editor para cada um e perguntará:
00:05:54qual será a descrição do PR? Vou simplificar aqui.
00:05:57E agora temos todos esses PRs. Com os PRs abertos,
00:06:01podemos ver esses números aqui em cima. Número um, número dois...
00:06:04são os números dos PRs e as mensagens.
00:06:06Usamos basicamente os mesmos para cada um.
00:06:08Também podemos ver com o comando "-v",
00:06:10que é o modo detalhado, as URLs de cada um.
00:06:12Vamos dar uma olhada em um deles.
00:06:14Este é o PR que altera o README e vemos que ele tem apenas
00:06:18um commit e a mudança naquele único arquivo. Está isolado.
00:06:23Este aqui é o empilhado.
00:06:24Ao olhar para um destes, vemos que o que ele fez
00:06:28foi criar uma pilha. O primeiro,
00:06:30que é o PR da base, tem o "main" como alvo, certo?
00:06:35E o segundo, que podemos acessar aqui, tem o primeiro como alvo.
00:06:39Então ele cria um branch empilhado corretamente.
00:06:41Agora vamos ver o que acontece quando integramos algo.
00:06:43Vamos para este pull request do README. Podemos dizer: ok,
00:06:46parece bom. Vou fazer o merge. Agora isso está no upstream.
00:06:49E se rodarmos "but pull --check", ele fará a verificação.
00:06:55Também podemos rodar "but fetch", que fará isso por você.
00:06:57Ele também faz o fetch em segundo plano de tempos em tempos.
00:07:00Talvez você tenha visto isso ao rodarmos alguns comandos.
00:07:02Aparece que iniciou um processo em background. Mas vemos que este foi
00:07:06integrado. Vemos a integração no upstream. Então, ao rodar "but pull",
00:07:10o que ele fará é buscar essa nova informação.
00:07:13Ele fará o rebase dos outros branches e removerá esse branch
00:07:16integrado. Vemos que ele foi removido localmente.
00:07:19Agora, quando olhamos, aquele já foi,
00:07:22estes outros foram atualizados via rebase e podemos
00:07:25subi-los novamente se quisermos. E a qualquer momento,
00:07:29se quiser voltar a usar apenas o Git, você pode rodar "but tear-down",
00:07:33e isso permitirá escolher um dos seus branches.
00:07:36Você verá que ele escolherá o primeiro branch em que você estava,
00:07:39mas todos os branches em que estávamos trabalhando ainda estão aqui.
00:07:43A questão é que o Git normal só permite estar em um. Agora você está em um só de novo.
00:07:47Você pode usar "setup" e "tear-down" para entrar e sair do modo Git Brother.
00:07:50Se quiser trabalhar em vários branches ou apenas usar o fluxo normal do Git.
00:07:55Mas mesmo no modo Git Brother, a maioria dos comandos Git
00:08:00ainda funciona. Você pode dar um "git show" em um desses, é a mesma coisa.
00:08:04Pode dar um "git log", funciona igual. "git log -S" também funciona.
00:08:08Todos os comandos de leitura funcionam bem. Mostrar logs, tudo isso,
00:08:13o que estamos realmente gerenciando para você é a parte de commits. Neste caso,
00:08:16você também pode mudar de branch direto pelo Git e o Git Brother perceberá,
00:08:21removendo tudo o que estava fazendo. E novamente,
00:08:24tudo deve voltar ao normal.
00:08:26A última coisa que vou mostrar é que todos esses comandos possuem
00:08:30uma versão em JSON. Se quiser rodar o status com "--json",
00:08:34pode fazer isso. Se quiser dar um "show" em um commit, por exemplo,
00:08:41quase todos os comandos permitem isso,
00:08:44e você pode ver todos os comandos com "but help". Quase todos eles
00:08:48têm uma opção "--json" ou "-j".
00:08:52Isso significa que você pode automatizá-los facilmente. Até mesmo
00:08:56o "diff" pode gerar uma versão JSON das mudanças,
00:09:00o que eu acho sensacional.
00:09:01Esta foi uma breve introdução ao Git Brother e suas possibilidades frente ao Git.
00:09:05Mas, reforçando: você pode usá-lo em qualquer repositório Git.
00:09:08Rode "but setup" e comece a usar esses comandos.
00:09:12Você tem saídas JSON, pode gerenciar múltiplos branches,
00:09:15gerenciar branches empilhados, pode fazer sua
00:09:17integração com o GitHub e gestão de PRs.
00:09:20Tudo é imediato, basta começar a rodar os comandos "but" e pronto.
00:09:24Sempre que quiser voltar para o Git purista,
00:09:26embora a maioria dos comandos Git ainda funcione nesse ambiente,
00:09:29basta usar o "tear-down" ou mudar de branch que ele limpa tudo.
00:09:33Experimente hoje mesmo.
00:09:35Acesse [gitbrother.com/cli](https://www.google.com/search?q=https://gitbrother.com/cli), baixe e comece a testar.
00:09:39Entre no nosso Discord e me diga o que achou. Valeu!

Description

Scott walks through the GitButler CLI, a smart, drop-in replacement to the Git command line tool. Website: 👉 https://gitbutler.com/cli Install: 👉 curl -fsSL https://gitbutler.com/install.sh | sh Docs 👉 https://docs.gitbutler.com/cli-overview GitHub repo 👉 https://github.com/gitbutlerapp/gitbutler/

Community Posts

View all posts