o quarto e para todos é feito de propósito mais ou menos a mesma coisa uma duplicata do projeto original só que para combinar as modificações de dezenas envolvedores uma única versão era um forno a filha e o olá pessoal fábio aqui tá fiquei bem contente vocês gostaram do vídeo de guia da semana passada como eu tinha dito o objetivo não era fazer um tutorial e sem da contexto de como as coisas começaram e por que usamos bicho hoje em dia para tudo porém vocês devem ter notado que o vídeo ficou bem longo passando de uma
hora então obviamente eu não consigo dizer tudo o que eu queria mas como parece que vocês gostaram do assunto e resolvi fazer logo esse na sequência para encerrar nesse episódio eu vou de fato fazer um formato mini tutorial no começo só que não vai ser os comandos básicos como eu já disse essa altura você já devia ter ido no site oficial do hit n da documentação oficial que faz um excelente trabalho de explicar não só o básico mas tem bastante coisa avançada para estudar também na segunda metade que começa a nesse tempo aqui embaixo se
você quiser pular direto eu quero dar mais contexto em particular rapidamente explicar por que apesar do desenvolvimento de uns projetos open source é importante de todos os tempos a kernel do linux tecido a origem do writ ninguém por lá tem muita intenção de migrar para plataformas mais modernas como hit ruby e também dá meus dois centavos sobre um assunto que talvez você tenha ouvido falar chamado mono ripos.de e para começar eu quero explicar algumas coisas que eu acho que é importante qualquer desenvolvedor saber hoje em dia a principal função de um repositório git é gravar
um registro preciso da história em qualquer momento você pode voltar no tempo e ver como o seu código era exatamente uma hora atrás um dia atrás ou um ano atrás e ele consegue fazer isso garantindo que os dados colocados lá então íntegros ou seja você nunca vai puxar um dado corrompido sem o gui te avisar e para guardar tanta história ao mesmo tempo ele faz o possível para economizar espaço apesar do geek sozinha fazer bastante coisa sem você saber ainda assim tem maneiras de você estragar seu repositório então o tema desse mim tutorial dessa primeira
metade do vídeo é um pouco sobre como zelar um pouco mais pelo seu repositório e eu acho que a primeira coisa que você devia tentar fazer não escreve porcaria nas mensagens de convite tá ligado a mensagem do tipo quais são os e o hotfix ou atualizando qualquer lixo assim sendo mais exato você pode fazer mensagens porcaria de kumite mas o seu próprio branch antes de merge ar seu trabalho na master por favor escreve que nem gente vai o tico e o teco não reclama tanto assim mas tudo bem eu entendo você começou a semana passada
só sabe os primeiros comandos que todos os 10 mil tutoriais por aí já repetiram milhares de vezes digamos que você fez und comitê escrever uma palavra errada mas agora já era tá comentado já foi deixa para lá não sempre conserta as coisas no minuto que notou o erro e corrigir uma mensagem de commit é super fácil nenhum inconveniente vamos lá primeiro vamos adicionar alguns arquivos no stade agora vamos fazer bit comet com o erro na mensagem putz e agora se eu puxar o dente log olha que feio mas não tem problema vamos fazer gift comente
traço traço amend a mensagem certa aí um olha só aqui simples completamente indolor e não te custou dois segundos mas vamo mudar o exemplo digamos que você está programando feliz e contente só para simplificar vou só queria um arquivo vazio aqui adicionar um convite só que aí você lembra pontos que se que precisava fazer outra coisa então vou querer outro arquivo aqui comentar com a feliz mensagem de fixing mas como sempre nunca acaba quando você pensa daí dá algum outro pau e você lembra que precisava adicionar o outro arquivo então vamos fazer isso e comentar
com a criativa mensagem de fixe de novo e você pode continuar fazendo isso e de repente você achava que ia terminar medo de comidas atrás e em vez disso ficou com um monte de cometi zinho com mensagens toscas de fixe tudo bem tudo bem não tem nenhum problema fazer isso no seu branch porque se você está desenvolvendo no seu brent e ainda não deu puxa para o servidor você ainda tem uma chance de não passar tanta vergonha há duas formas de fazer isso uma delas é a forma que eu normalmente faço porque eu sou meio
preguiçoso para lembrar muitos comandos o gui tem um comando que faz diversas coisas esse é o reset o último comente que você tá trabalhando normalmente é etiquetado como um rede ou literalmente cabeça eu já não falei que o ggit representado por um grafo mas no caso mais simples você tá lidando com uma lista ligada simples de comics e o último se chama rede a importância disso é que podemos navegar por essa lista ligada fazendo head till 3 para apontar três correntes para trás por exemplo o comando beach reset tem duas opções que uso mais hard
e soft o hard normalmente eu uso quando baguncei o código e quero simplesmente apagar tudo que eu fiz eu voltar como era antes de eu mexer é uma opção tipo de ando sem recuperação então cuidado por outro lado eu posso fazer soft que vai remover os commits da tal lista ligada mas não vai jogar fora as modificações desses co bom e é isso que eu quero eu quero apagar os comics fixe mas não quero perder o que eu fiz então vamos fazer isso gente reset traço traço soft red steel 2 que foram os dois commits
the fixing pronto mateus comics e agora posso fazer um novo convite uma mensagem de sente se eu errar a mensagem eu posso fazer amend como falei antes mas esse não é o jeito considerado oficial tem um outro jeito então vamos ver fazer os convites feios de fixo em de novo pronto agora podemos usar git rebase trás ui que significa interativo porque o bicho vai ficar me perguntando o que ele quer que eu faça se eu passar gente rebase traço hired tio2 ele vai abrir a seguinte tela olha que fácil ele lista os últimos comícios normalmente
eu quero manter o primeiro como pique e os seguintes eu posso mudar de pique para squash squash é o que você pensou mesmo amassar tudo junto não precisa ser todos eu posso inclusive pular um no meio eu fizesse sentido mês com a tudo junto embaixo ele te ajuda ainda dizendo quais opções você tem eu recomendo brincar com todas as opções não repositório local seu vamos mudar tudo para squash esse editor que ele abriu para mim é o vim que é o que eu prefiro mas você pode usar qualquer outro editor mudando a variável de ambiente
é editor ou usando o comando git config de novo veja a documentação oficial do hit config para saber mais mas enfim quando eu gravar isso aí ele vai abrir o editor de novo mostrando embaixo o tem esse novo comente vai conter e me pedindo para eu editar uma mensagem de sente então vamos tirar mensagem padrão que ele montou e digitar uma mensagem de sente pronto agora se damos um bitlogg veja que bonito que ficou para o próximo exemplo uma coisa muito comum é você começar a trabalhar numa coisa aí você dá uma devagar da resolve
da outra coisa não relacionada só que agora você ficou com duas coisas não relacionadas que precisa come é bom para o caso mais simples onde você cria o arquivos relacionados alguma coisa e queria outros arquivos que são de outra coisa diferente a maioria das pessoas faz um bit ad ponto e comida tudo junto tá errado comics devem ter só uma coisa de cada vez um convite uma pequena funcionalidade um convite para correção de bug um convite para documentação é meio difícil definir o que é essa coisa mais uns o bom senso para variar não faz
sentido você misturar um arquivo css de uma tela com uma linha nova de regime escrevendo infra por exemplo como criar um arquivo css qualquer e vamos criar um arquivo vídeo e por exemplo e vamos criar mais algumas coisas para ficar mais realista a coisa mais simples é dar um kit ad e o nome do css e fazer o convite só do css depois fazer kit é ele separado do vídeo e um comente só para ele quando você tem poucos arquivos esse é o jeito mais simples mas normalmente você se empolga ou tá usando algum gerador
de um primor e fica um tanto de arquivo eu sei é um saco de target ad para cada arquivo para organizar o convite digamos que você começou a fazer na besteira de fazer quiche é de ponto agora todos os arquivos estão misturados no stade e se você deve it commit vai tudo para o mesmo convite mas ainda tem como consertar se for só um arquivo que você quer tirar do estágio basta fazer gift reset traço traço e o nome do arquivo pronto se deve status veja que ele saiu do estande mas como eu falei faz
de conta que são uma dúzia de arquivos você deu gift ad ponto de tudo novamente a preguiça reina e você tá quase ligando fazendo cometi de tudo calma ainda dá para consertar fácil digite quit é de trás ui que é de novo opção interativa ele vai te abrir esse - sim e você pode usar opção 3 que é reverte vai estar todos os arquivos que estão nesse trade você pode só digitar o número dos arquivos que não quer comentar agora no final e entra para voltar para o menu anterior digamos que você olha e fala
puts tinha um arquivo que eu tirei que era para estar lá mesmo na real então você tem opção 2 de update é um oposto agora você digita o número do arquivo que quer colocar no estágio da inter no final e no menu principal digita que quer da cut para sair pronto vamos dar gift status e olha só é como se tivéssemos dado beach é de manualmente arquivo por arquivo agora sim podemos fazer o comitê correto e fazer guichet de transferir de novo para adicionando arquivos para o próximo convite super simples mas como eu falei esse
é o caso simples ensino mesmo arquivo temos modificações que um é para ir no convite e o outro é para ir só em outro convite vamos fazer um arquivo bidme qualquer como conteúdo aleatório para servir de base pronto agora vamos fazer três modificações agora eu queria que a primeira modificação ea terceira fossem um comigo só e a segunda modificação fosse em separado como digitar gridify para ver o pet completo olha só seu the great é de como está vai tudo no mesmo convite e agora não se preocupem para isso tem gente é detrás o p
a ideia é que o bicho vai perguntar um ranking de modificação de cada vez veja só como as modificações estão próximas ele me pergunta se quer adicionar elas juntas por stayed se eu quisesse bastará digitar e essa ou se eu não quiser pular eu digito nou nesse tanto de opção aqui embaixo se eu der enter ou interrogação ele vai explicar todos opções que eu tenho vale a pena explorar cada uma delas depois no repositório local mas no meu caso eu não quero adicionar tudo junto eu quero dividir para isso eu digito sd split e veja
só ele dividiu o ranking mais uma vez e me deu só primeira parte que é o que eu quero então vamos daí essa o próximo ranking é o que eu quero separado então dominou para pular e a última também quero no mesmo cometi então eu dou esta se eu quisesse parar no meio era só digitar que the cut o status temos que parte do arquivo midi me tá no stage e parte não tá seu da guide with traces they did para ver só o que vai no próximo comet veja que tá só um ranking que
eu escolhi vamos criar o convite pronto e agora só sobrou a segunda modificação que eu posso adicionar no stayed e criar o segundo o comitê entenderam essa parte pode ser meio complicado na primeira vez então eu recomendo assistir de novo mas resumindo eu tinha modificações no mesmo arquivo que eu queria separar em comics diferentes para isso usamos bitde trasuper aliás esse p é de pet trabalhar convite tem sempre três estágios o primeiro estágio acontece hoje chamamos de worktree que é o diretório normal de trabalho com seus arquivos para você editar e tudo mais para criar
um convite você precisa estacionando os modificações no lugar intermediário esse lugar chamamos de estende ogfeet não rastrear arquivos ele rastreia conteúdo rankings e lembra que eu falei no episódio anterior então podemos adicionar todos os modificações de um ou mais arquivos com os comandos 20ad oughtred traço ir ou adicionar um ranking de cada arquivo de cada vez usando o kit é detrás upe aliás community rastrear conteúdo e não diretórios por isso que diretórios vazios nunca entram no repositório git e por isso muitos primor reserva um diretórios vazios colocando um arquivo vazio escondido com o ponto de
equipe só para o diretório tem alguma coisa com esse conseguir adicionar no beach uma vez que eu tenho tudo que eu quero no stayed eu posso empacotar com o comando digite comente onde você cadastra uma mensagem e o guincho vai terminar adicionando o resto dos mercados para grudar seu convite com uma nova cabeça do gráfico com a etiqueta de rede mas mesmo depois que você já comentou ainda dá para voltar atrás você pode fazer glitch reset tanto hard para pagar tudo sem dó nem piedade ought reset soft para tirar os e do grafo e jogar
as modificações de volta para o estágio vamos fazer isso para você ver digamos que temos alguns convites vamos fazer kit reset traço traço soft red shot 2 para pagar dois comics essa sintaxe de rede tiozinho pode ser mais complicado se você tiver merges no meio do caminho então recomendo pesquisar e estudar como isso funciona na documentação oficial mas para a maioria dos casos serve associar que esse número é o número de convites para trás por exemplo se você quiser reverter um comente de méxico aponta para outros 10 convites isso é um galho paralelo no histórico
basta usar rede x1 que ele vai matar só o comente do médico que é quem liga os outros comícios e você sobe com os dez isso é tão intuitivo então é melhor você praticar de qualquer forma demos reset soft se der mos bitlogg veja que ficou mix desapareceram mas você não perdeu nada se deve status veja que tá tudo no stayed como se vocês um bando de dag chiedi nesse ponto como já fizemos antes podemos da guide comitê empacotar tudo num convite mas isso é alguns desses arquivos eu não quero no próximo convite para isso
podemos fazer kit reset traço traço e o nome do arquivo ou só gui reset traço traço ele vai tirar tudo do estágio olha no beach status como mudou e eles saíram do stayed a partir desse ponto podemos fazer richard traço ir ou richard traz o pé como já expliquei antes mas digamos que eu tô estressado e quero só uma reta tudo para o lixo então eu vou fazer kit reset traço hard porque eu sei que só tem lixo aqui mesmo e que pariu tinha um arquivo que eu não podia perder e agora calma se você
tiver o xau no último começo está tudo certo e por sorte de mussum bitlogg aqui em cima então temos o chão e podemos fazer o equivalente ao ano de elite mesmo se não tivesse e ainda ia dar só ia dar um pouquinho mais de trabalho para achar o commit certo como eu disse antes o gui tem um banco de dados de grafos quando demos é só mudamos a etiqueta uma referência do branch master 2 convites para trás os coments ensinam foram apagados eles foram só marcados para serem apagados aliás pro chip sempre evite apagar dados
melhor sempre marcar como apagado e de tempos em tempos o kit rodam garbage collector que você pode executar manualmente com o comando dj's e que seria o equivalente a esvaziar a lixeira do windows mas não queremos rodar o gc agora vamos primeiro tirar nossos comícios da lixeira para isso podemos rodar o comando git reflog trás uber para criar um novo branch com o chão aproveitando note que normalmente usamos só um pedaço do começo do chá um em vez do chão inteiro porque como raramente eles colidem só a versão curta é suficiente para achar o convite
e pronto se der uns de tlog veja que o master continua apontando dois convites para trás mas acabamos de anexar etiqueta de teste para o comitê antigo se eu quiser recuperar de volta para o e basta dag check-out master para voltar para master e como estamos trabalhando só localmente sendo a puxa o povo de servidor podemos fazer um gift rebase desse teste e se der mos de ti log de novo veja que o branch master tá apontando para o mesmo convite que o brent teste se listarmos os arquivos pronto tá tudo recuperado agora podemos respirar
fundo e reescrever esses convites sem perder algo importante assim e pode apagar esse brant temporário kong branch traço de teste pronto tudo limpo tudo que eu mostrei até agora são comandos que você pode e deve usar no seu dia a dia para manter o histórico dos seus comícios limpos muita gente especialmente iniciantes e amadores liga o para isso eu mesmo sou culpado já te dado puxe de muito cometi ruim eu não posso julgar tanto o correto é deixar limpo repositório limpo código limpo tudo isso faz parte de você se tornar um profissional é que em
sua o seu escritório você pode jogar lixo no chão pode deixar as coisas sujas isso diz muita coisa sobre você se for o espaço compartilhado demonstra sua falta de respeito com as pessoas ao redor e se você é um tecnid ou seja lá que posição que é responsável por merge apuê quests dos outros é parte do seu trabalho rejeitar po e conhece se eles estiverem sujos e ruins se não para quê que você serve rejeita sumariamente po e quests que estão quebrados incompletos sem teste bagunçado com coisas que não devia estar misturadas com comics em
mensagens de sente descritivas tudo isso faz parte do protocolo de boa vizinhança a mas estamos com pressa os prazos estão apertados está um pouco bagunçado um pouco quebrado depois a gente arruma não depois que alguma coisa é mergulhada na massa ninguém nunca mais vai arrumar faz direito da primeira vez sujeira se eu nunca vai limpar o que vai acontecer com sempre acontece é que lá na frente só sujeira vai aparecer e quando a produtividade cair número de bancos aumentar mais pessoas novas entras na equipe com todo mundo copiando os maus hábitos é tarde demais é
muito difícil senão impossível mudar maus hábitos depois então enforce bons hábitos no começo dez anos atrás tinha um excelente programador na minha equipe e ele gostava de me tornar os outros desenvolvedores eu não tenho certeza mas eu acho que todo mundo podia dar puxa direto na master ainda não era tão comum sapo e quests como fluxo de trabalho ele basicamente apagava o comet da master se o novo código tivesse sem testes a regra dele era muito simples código sem teste não tem lugar no repositório e ele tinha razão no começo todo mundo reclama depois sabe
o que acontece todo o código tá com cobertura de teste a produtividade não cai mais do que isso ela aumenta porque no futuro não acumula o débito técnico débito técnico daria um outro episódio inteiro mas resumindo é qualquer coisa que você sabe que devia fazer mas acha que vai te deixar mais devagar então você escolhe pula você queria uma dívida só que como o nome diz uma hora você tem que pagar essa dívida e quanto mais demora mais os juros vão aumentando vai ficando cada vez mais caro mais e mais rápido é uma escolha e
às vezes realmente compensa assumir uma pequena dívida basta ter consciência de pagar os juros sem reclamar depois mudando de assunto falando em projetos dos outros vai uma outra dica tô parecendo uma vitrola quebrada mais na documentação no site oficial do gift tem um capítulo sobre migração de projetos para gift eu mencionei que mesmo se você tiver um projeto subversion ainda assim pode usar kit para fazer isso primeiro você vai instalar o suporte assumir vejam do guti vamos voltar para o ubuntu instalar o pacote apte install o svn todas as distros tem algum pacote similar feito
isso como clonar o projeto do próprio subverte o que obviamente está em subir vejam disse svn clone e o endereço isso vai demorar um tempão então vai almoçar quando voltar você vai ter um cone do repositório em geet a partir daqui você pode simplesmente da guide remote para adicionar um repositório vazio do it have por exemplo e da puxa para lá e a partir desse ponto pode jogar fora o repositório subverte todo o histórico tá salvo mais digamos que você não possa fazer isso porque sei lá por que motivo a empresa exige que precisa comentar
no servidor de subverte o mesmo não tem problema localmente tudo que eu expliquei no tutorial até agora vai funcionar igualzinho é um repositório beach normal e tempos em tempos você pode fazer gift svn rebase para puxar os últimos comícios subir vejam e quando tiver terminado basta agora fazer um gift svn the committee me é diferente de um convite de bichat que é só local comente de subverte é para mandar para o servidor aqui unity svn vai pegar os convites que você trabalha localmente no bilhete e queria comics de subir vejam a graça disso é que
outros desenvolvedores de subir vejam quando derem svn update não baixa a seus convites como se você nunca tivesse usado o kit a diferença que você vai trabalhar muito melhor que todo mundo porque você pode fazer bends locais para experimentar coisa trabalhar os poucos fazendo pequenos correntes e só no final pode fazer squash dos seus brilhantes e criar comics links para mandar de volta para o servidor legado era o que eu fazem 2007 e digamos que em vez de subir vejam você tá usando o meu tio léo bazar perforce o mesmo antigo tfs tem opções similares
para todos eles olhem a documentação no site oficial uma última dica importante que muitos iniciantes fazem errado digamos que você é um desenvolvedor front-end digamos o seu arquivos de photoshop dos designers e como é de costume vira e mexe os designers mandam novas versões do photoshop uma hora vocês perdem noção de qual era a versão mais nova e ninguém chega num consenso de qual era a versão do design certo para mexer para facilitar alguém tem a grande ideia de criar uma pasta chamada photoshop na raiz do projeto e vocês ensinam o designer ao zag também
daí sempre que tiver versões novas todo mundo recebe no próximo um e ninguém mais se confunde ótima ideia só que isso tá errado se você não souber o que é lfs lembrem do que eu ensinei no episódio anterior ferramentas como dif pet o próprio beach tem algoritmos muito bons para lidar com o ranking e pets de texto porém photoshop o arquivo binário não existe nenhuma forma eficiente se fazer pets de arquivos binários se você 30 meses já binários sem saber estrutura interna delas a chance de dar problemas o que a mente garantindo portanto gift não
faz deltas de binário ele grava o binário inteiro aliás ele gravou o arquivo inteiro para cada modificação para entender o problema pensa assim digamos que votou shop original tinha 200 mb você adicionar ele no beach o designer vai mexendo e todo dia ele criou um novo convite ele faz isso por cinco dias em cada comet vai os 200 mega inteiro de cada versão porque como eu disse não tem como tirar delta de binário ao final de cinco dias repositório tem cinco x200ma ou 1 giga agora todos e o que fizer cone vai baixar esse um
giga inteiro sendo que o código mesmo repositório são só alguns megas e normalmente você só precisaria de uma da última versão do photoshop do designer se forem arquivos pequenos como jotapeg sou png tudo bem mas qualquer coisa muito maior que isso precisa ser tratado diferente isso é uma das arestas que ainda não é exatamente a melhor solução mais para casos assim onde você precisa armazém o binário como photoshop os vídeos áudios instaladores você tem que lembrar de fazer a seguinte maneira tem o ubuntu primeiro você precisa instalar app install git lfs pronto agora no diretório
do projeto você inicializa kong trfs e install a finalmente você tem que dizer para o kit que tipos de arquivos você quer jogar no lfs para isso você faz de trfs track asterisco psd por exemplo isso vai criar um arquivo chamado ponto kit atributos com essa condição agora você pode começar da guit é de arquivos com extensão ponto psd como adicionar alguns ps3 da guide criar um convite e até aqui tudo igualzinho como era antes do seu ponto de vista desenvolvedor não parece que mudou nada o que está acontecendo agora é que no comet não
vai mais anexado o arquivo binário inteiro em vez de jogar o binário no diretório ponto kit barra óbvio que eu ensinei no episódio anterior ele vai jogar em outro diretor olá kitty nfs-e no convite em si em vez de armazenado binário inteiro vai só um texto indicando onde está o arquivo pensa como se fosse um link simbólico no linux assim o comente fica super leve sem o binário usam pesando nele e a vantagem disso é que agora quando você fizer um novo beach cone do zero não vai mais vir todo um giga com todas as
versões do photoshop que designer comitou vai ver só o último aí você pode pedir versões antigas se precisar a desvantagem disso é que instalar e configurar o suporte lfs não servidor the gift seu pode ser um pouco chatinho de gerenciar se você tiver usando hit ruby eu que te leve outra plataforma web esse trabalho deve ser mais transparente na dúvida sempre o seguinte lfs se tiver arquivos binários grandes no seu projeto porém no caso do seu projeto é basicamente só binários grandes e pouco nenhum texto eu dizia que o ggit não é a melhor solução
não somente nenhum ver senador feito para código imagina uma o design ou uma produtora de vídeo ninguém usa gift no lugar desse se você precisa lidar com binário o fluxo de trabalho é completamente diferente não tem como dois designer trabalharem ao mesmo tempo em máquinas separadas no mesmo arquivo do illustrator não existe pumba e quest de edição de vídeo deprimir não tem como fazer pets no arquivo de áudio de loja que pro trabalho de mídia pela própria natureza sempre vai ser um fluxo em cascata onde a próxima etapa só pode ser iniciada quando a anterior
já terminou e sempre por favor tá passo é uma dor de cabeça por isso mesmo não é incomum ver servidores de arquivos em rede de alta velocidade rede de 10 gigabit com servidores mais parrudos com gigabytes de ram para fazer buffer e soluções bem caras como os famosos dead fish da luma ford curso os modelos mais baratos como de 32 era móvel começa em mais de nove mil dólares 32 tela é bem poucos o servidor que começa 80 tela não sai por menos de 30 mil dólares tá vendo porque que o metroid $10000 não é
caro para um lugar desses voltando ao assunto para poucos binários como design de photoshop video mp4 de tutorial do seu produto manuais em pdf coisas assim use um grind fs mas digamos que você não sabia disso e já tem um repositório com um monte de binário e já tá sentindo que talento todo mundo que faz 20 cone fica esperando um tempão baixa tudo pela internet e na cidade que você mora se quer tem internet banda larga com fibra e agora o problema de um repositório de versionamento é que por princípio binário agora está anexado no
kumite e esse binário é usado também para gerar o shalom que identifica o convite lembra se eu tirar o binário vai necessariamente mudar o chão qual que é o problema disso lembra que o bicho é um dag ou seja um grafo onde os nós são cada comet apontando para anterior em mente a ponta anterior fácil armazenado nele o chá um desse comente anterior ou seja se o sal no comitê anterior mudar o chá um de todos os outros comícios que apontam para ele mudam também portanto sim é possível arrancar fora um arquivo do beach mais
para fazer isso precisamos literalmente reescrever toda a história até o ponto onde o binário foi adicionado pela primeira vez se fizer isso todo mundo que trabalhava no repositório antigo vai precisar dá um gift cone novo tudo outra vez se você tá no ponto onde seu repositório tem gigas de tamanho tá ficando cada vez pior só adicionar o hit lfs não vai adiantar porque o lfs só vai ficar tio para novos comics mas os antigos vão continuar repositório entendido isso vamos aos finalmentes a situação tá feia a equipe concorda que vale a pena todo mundo parar
de trabalhar um pouco para limpar o repositório lembra todo mundo para dar puxa das suas coisas para o servidor uma solução é usar o recurso de fio a parte do kit mas ele é muito lento não um vez disso vamos usar uma ferramenta feita em java chamada bfd eu gosto dele só pelo nome eu não sei se foi essa inspiração mas qualquer um que ter jogado um sabe o que é um big fun kitchen gun eu vou deixar o link nas descrições abaixo mas resumindo primeiro você instalar java na sua distro como cada um tem
seu jeito vejo nas documentações para cada sistema operacional no monta eu acho que seriam apt install open jdk agora você baixa o jairo nesse link para executar um java se você não sabe é rodar o comando java pra sujar com o caminho para onde você baixou já agora você precisa fazer um gift cone traço traço mirror do repositório gigante tem que ser como mirror porque quando você acabar e the beach push ele vai reescrever todo o repositório mais ou menos como se você fizesse um gente puxo com traço traço force com o bié fingir você
pode escolher remover arquivos específicos pelo é mas se forem muitos você pode escolher remover todos os blogs maiores que um certo tamanho por exemplo digamos que todos os seus vídeos tenham sem mega ou mais então use essa opção para remover por esse critério tem um outro caso de uso para o bf de se por acaso em vez de arquivos grandes na realidade você fez a besteira de iniciante todo mundo faz e comentou arquivos de configuração com senhas hardcoded de coisas de produção que você não sabia disso deixa eu explicar jamais cometi coisas como senha no
repositório mesmo se você apagar do arquivo depois o histórico vai continuar lá se você fez a monumental besteira de comentar senhas no beach agora você precisa obrigatoriamente a tirar o bfd para reescrever a história também lembra que eu já expliquei que o bicho não apaga para sempre seus convites o bfd vai gerar novos comics e reaponta todas as referências de brinde tudo mais corretamente mais a antigos vão continuar na lixeira para apagar definitivamente você vai usar o comando digite gc o procedimento correto é primeiro eu vou dar um git reflog pra inspirar tudo que você
não vai precisar e depois rodar ogfeet gc assim feito isso é só dar um kit puxe de vamos para o repositório principal do kit ramo e agora você pode apagar essa cópia local onde rodovia fingir e todo mundo pode dar gift clone de novo do novo histórico e sim procedimento não é exatamente trivial nem rápido mas também a ideia é que se você fizer certo como eu expliquei até agora você não devia precisar vou dar algo assim o bfd é para os casos raros onde você fez merda e agora temos que limpar merda se isso
fosse pouco fica um bife desse de alguém estão the wolf e você é um vincent was tendo que limpar a merda dentro do carro e falando em sujeira vamos falar rapidamente sobre monotipos esse é um daqueles assuntos que arrisca ser controverso mas eu vou tentar simplificar para vocês já ouviu falar dessa palavra não me engano começou com twitter mas o que interessa é o seguinte digamos que você é uma empresa de tecnologia gigante mais especificamente uma com poucos produtos muito populares centenas e desenvolvedores internos como twitter pior ainda digamos que esse produto é composto por
dezenas de bibliotecas e microsserviços imagina o pesadelo logístico você tem dezenas de pug com essa aparecendo toda hora em dezenas de repositórios de códigos alguns deles pode acabar quebrando as integrações entre os diversos componentes um exemplo hipotético simples digamos que nos repositórios você atualize a biblioteca de ar sem de jason por conta de uma melhoria de performance mas digamos que em outro repositório você precisa e voltar uma versão para trás dessa biblioteca de jason porque a versão nova causam o erro de compatibilidade com aquele código e agora imagine um terceiro repositório que importa o código
e os repositórios cada um dependendo de mesmo mil tec em versões diferentes fudeu agora imagina a situações como essa aconteceram na mão de centenas e desenvolvedores toda hora todos os dias imagina a dificuldade que no final empacotar tudo junto para gerar um depois coerente milhões de linhas de código divididos em dezenas ou centenas de repositórios recebendo modificações o dia inteiro pela mão de centenas de desenvolvedores sendo vários desses times distribuídos geograficamente separados até por fusos horários diferentes e no final preciso empacotar uma versão de produção sem bugs ai e isso tem que acontecer com bastante
frequência tipo uma vez por semana ou mesmo a vez por dia e também o depois acontecem centenas de máquinas espalhadas em dezenas de data centers pelo mundo e para piorar imagina 20 anos de histórico de código acumulado do caso de alguém como google podem google no caso dele estamos falando há milhões de linhas de código mais de 25 mil engenheiros e quase 20 anos de histórico no mundo repositório gigante com todo o código da empresa que hoje já passou dos 80 terabytes só de código esse é o tipo de desafio que empresas como twitter google
facebook netflix e outros gigantes enfrentam todos os dias nesse contexto é muito fácil de imaginar que uma das técnicas que pode ajudar é reunir todos os projetos que compõem o produto num único repositório mais do que isso vendo avisar ou seja baixar as dependências de terceiros e também comentar junto com o código em vez de instalar bibliotecas só durante o processo de depoimento introdução por que que você acha que o gol que a linguagem criada pelo google não tem um gerenciador de dependências tradicional como o npm de javascript por que o google prefere manter todas
as dependências estáticas junto com o projeto eles também preferem compilar todos e bênçãos estaticamente no mesmo binário usam de forma que não precisa depender de quase nada instalado o sistema operacional essa é a necessidade deles e um gogo da vida foi primariamente feito para resolver os problemas específicos deles não necessariamente os seus casos como google twitter o facebook são obviamente pontos fora da curva você pode contar nos dedos quantas empresas têm o mesmo nível de problemas agora ver o ponto principal você não é o google desculpa a chance da sua empresa seu próximo twitter ou
próximo facebook é uma fração de uma fração de uma fração de uma fração de um por cento que nós e matemática chamamos que é o limite tendendo a zero quando o engenheiro de uma dessas empresas apresenta em palestras e eventos opostos de blog sobre o que eles estão fazendo esses insights serve na maioria das vezes para outras empresas de porte similar portanto o que é uma empresa com uma equipe de 10 20 pessoas com 10 20 repositórios meras dezenas de milhares de linhas de código fazendo depois em produção a vez por quinzena então quase nada
da escala habilidade de um google se aplica você se você é menor que isso pode pular esse assunto um bom tempo que não te interessa uma das coisas mais prejudiciais que alguém pode fazer é adotar uma tecnologia ou técnica baseado na premissa errada de se o google usa deve ser bom e devemos usar também não essa premissa não faz o menor sentido porque o correto deveria ser se o google usa qualquer empresa de mesmo porte com os mesmos problemas talvez se beneficiem talvez vale a pena tentar você tem o porte do google mais importante você
tem o dinheiro que o google investe lógico que não então não você nunca jamais deve usar qualquer coisa meramente porque é fanboy de uma marca fanboyismo é o oposto de engenharia a encontrar a solução do tamanho certo para o problema certo dentro das restrições do contexto nem mais nem menos agora tem um problema similar que vale a pena colocar em perspectiva eu mencionei no episódio anterior que o desenvolvimento da carne do linux não tá no hit ruby um dos motivos é que ele nos tornamos jamais vai confiar no terceiro para manter a cópia mestra do
kernel i've never ever just girls make mais wherefore i'm sorry you're not at work at home in motion with the master copy of this world i just another both so much bigger surprise his lyrics nohrian google now and i logo golfinho hip hop brilhante have something i know big mas tirando isso seria bem difícil usar o fluxo de trabalho interface gráfica é mas a peace dog rubi assim como no caso do molipo daria para ficar horas estando item a item todos os prós e contras explicar tecnicamente os efeitos para cada caso em particular em vez
disso eu quero que vocês leiam os links que eu vou deixar nas descrições abaixo e por hoje eu quero lhe citar só os pontos que eu acho importante a kernel do linux é uns projetos open source mais antigos em atividade hoje e com maior quantidade de código com a maior quantidade de voluntários colaborando ao redor do mundo dezenas de empresas de dezenas de setores dependem do linux a querem cia tecnicamente o monorepo mais corretamente é um monotree diferente de projetos dentro de um google onde a maior parte supositórios é centralizada e todo mundo kona de
um único lugar no caso do carne o existe o repositório do linus só que o único desenvolvedor que trabalha nesse repositório é o próprio linus cada distro como ubuntu fedora outros têm seus próprios repositórios a paz que não necessariamente cole não direto domingos cada fabricante de hardware que desenvolve drivers em repositórios diferentes mais importante diversos produtos estão trabalhando em versões diferentes da carne por exemplo na própria canônico que faz o ubuntu você tem o lts que é o long-term survival e o bumbum com versões mais novas dos componentes a ideia do lts aquele atualize o
menos possível para não ficar quebrando compatibilidade o tempo todo porém digamos que seja descoberta um problema grave de segurança não driver na carne nova e esse bug afeta várias versões da carne para trás o banco é descoberto no fedora primeiro então a correção é feita no repositório deles o pet da correção começa a ser distribuída em many cities cada empresa ou comunidade com o repositório tem seu mailing list a forma de distribuir para tanta gente literalmente usando o recurso de cc ou carbon copy de e-mail e assim distribuiu pet para diversos lugares diferentes um por
um momento não grite rubi se cada empresa que tiver uma organização e cada um tem um forte é como se você tivesse um jeito de postar o mesmo ponto e quest para diferentes repositórios em diferentes organizações coisa que não interface gráfica atual não dá para fazer na interface web você só devolve porque quest para repositor de quem fez forte mas o provão acaba aí não quer dizer que esse pet vai funcionar em todas as versões e diferentes variações de cada organização agora os responsáveis precisam testar muita discussão e não precisa acontecer e não amém list
essa discussão é um que play ou para todo mundo não te ame seriam as ixos em cada repositório só que no limite rúbia bichos são atrelados a um repositório como que o cara da rede hatch que tem repositório próprio vai ficar respondendo lá assistir os dele e nazistas de outras organizações como da canonical sobre o mesmo problema denovo a interface gráfica atual não tem como resolver esse problema mais do que isso cada área de interesse dentro do caderno a rede o ex o systemd e assim por diante tem uma lista de mantenedores eles que em
última instância vão aprovar ou reprovar uma modificação em seu subsistema no caso do neox se eu quiser achar quem é o responsável para receber o tal pet segurança eu procuro do arquivo chamado menters que tem na raiz do projeto no caso de um kit rubi cada mantenedor talvez teria um fork do projeto na sua conta do bitgamer mas não tem uma forma fácil de achar quais os fortes são de mantenedores ativos e quais os porcos são de colaboradores e de novo a interface gráfica atual não resolve esse problema em última instância até depois dos outros
repositórios já tem aplicado pet e depois lado a versão mestra pode acabar aplicando o pet depois dos outros porque o linus vai ser mais cuidadoso em aceitar os pets talvez até regente mande modificar mas enquanto isso a hard reset o canônico precisão fechar o banco e para os seus clientes independente do linux tem aprovado o pati ou não e tem muitas idas e vindas em cada pet e não existe a obrigação de que os fortes vão esperar para dar kit fat donos só depois de literal do mede no repositório dele o fluxo de trabalho no
limite rubi envolve fazer fortes dos repositórios discutir bichos na interface gráfica de repositório e esse b colaborações via podcast vindo de outros fox o fluxo de trabalho da carne do linux envolve dezenas de repositórios distribuídos que são fortes do repositório do linux com discussões acontecendo simultaneamente em dezenas de meio inícios e esses e-mail servindo como canal de distribuição de dezenas de peças de código que são automatizados diversas maneiras diferentes por cada empresa ou mantenedor uma das coisas diferentes do fluxo aqui no kit rubi só tem vão fazer pum e quase de volta para o repositório
de onde você fez porte na carne você quer distribuir os pets para múltiplos repositórios de uma só vez além de poder discutir o assunto em em diversos repositórios ao mesmo tempo é por essas e várias outras razões que hoje não tem como suportar o fluxo de trabalho da carne no git hub ou switch web ou qualquer um que siga esse mesmo modelo e tenha essa escala o fluxo dele segue uma árvore onde o principal é a raiz e ele vai expandido numa única direção para cada galho no caso do linux é uma rede um mexe
onde não existe direção definida cada nossa rede pode comunicar com qualquer outro nó sem um que coordena o bloqueio essa comunicação o bilhete foi originalmente feito com essa estrutura totalmente distribuída em mente hoje em dia nós simplificamos uma forma centralizada community hub para ficar mais usável para a maioria dos mortais em resumo sim seu kit rubi eu bitlab resolverem criar uma estrutura de projeto de múltiplas árvores do mesmo repositório separados para mantenedores diferentes como a forma mais simples de unificar a cooperação entre e por o canto do ponto de vista de lixos e porque quests
distribuídos talvez bem talvez um projeto com o linux poderia viver nessas plataformas mas você tem um tanto de funcionalidade extra para atender um nicho muito pequeno de projetos oqsomos projetos tem os requerimentos da carne ou do linux por isso não vejo isso acontecendo tão cedo para os colaboradores do kernel tirando alguns subgrupos que podem trabalhar mais isoladamente digamos equipes de drivers ou algo assim a grande maioria ainda vai ser mais produtiva com simplesmente enlists e distribuindo pets sem ficar na dependência de nenhuma plataforma controlando a comunicação em ambos os casos monoplus do google facebook ou
monotrilho da kernel do linux nenhum é o nosso caso comum meu ou seu a maioria esmagadora dos projetos o kit fought rubi como repositório principal diversos fortes e por requests que voltam para repositório principal e um único lugar e para isso ainda é o caso de uso mais produtivo você como desenvolvedor antes de perder muito tempo tentando achar que devia usar mono ricos porque é fã do google ou que deveria usar fluxos de monotrilhos porque é fã do linus primeiro para de fazer comente sujo com mensagem de fixo em para lá e para cá e
escreve código de sente eu posso estar sendo injusta em generalizar mas eu vou fazer mesmo assim normalmente quem é fanboy demais né fica só falando aí deveríamos deveríamos é o primeiro que faz o trabalho mal feito pela metade sujo antes de pensarem utopia primeiro nem passou quadrado aí acaba as coisas que começa escreve código limpo para variar depois vai cagando regra por aí e por hoje é isso aí pelo menos pelo futuro próximo eu acho que falei o grosso do que eu tinha para falar sobre beach e como eu disse no primeiro episódio de conhecimentos
gerais gift é obrigatório saber e-bit é uma ferramenta que a medida que você vai usar tô morando mais surpresa ele vai revelando lá uma coisa que você aprende no workshop de poucas horas e já acha que sabe tudo eu diria que se você realmente gosta de programação gente vai te manter fascinado por um bom tempo começa e no site oficial leia a documentação oficial é lá que você começa qual a de perder tempo com divagações desnecessárias põe a mão na massa escreve código limpo com a variar se ficaram com dúvidas não deixe de mandar nos
comentários abaixo se curtir o vídeo mano e o joinha e assine o canal e não deixe de clicar no sininho para não perder os próximos episódios a gente se ver até mais