"Hoje vou falar sobre os dois programas de controle de versão mais populares: SVN e Git."

"SVN funciona aproximadamente da maneira que descrevi na última lição. Git é um pouco mais complicado e pretendo discuti-lo com mais detalhes."

"Você pode me dar links para a documentação para SVN e Git?"

"Claro, só um segundo."

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (isso é simplesmente uma obra-prima)

"Então, Git ."

"É um pouco mais complicado que o SVN.  Com o Git, cada usuário tem seu próprio repositório local além do repositório do servidor. "

"Então, onde você se compromete?"

"Os usuários sempre se comprometem com seu repositório local."

"Mas e o repositório do servidor?"

"Para sincronizar os repositórios locais e do servidor, existem comandos Pull e Push especiais .

"Há uma razão para isso. Às vezes, um programador precisa fazer muito trabalho por conta própria, o que pode envolver várias centenas de confirmações antes de poder ser adicionado ao repositório compartilhado."

"Para fazer isso no SVN, você teria que iniciar uma ramificação separada e depois mesclá-la com o tronco."

"Com o Git, você simplesmente sempre se compromete com o repositório local e, quando terminar, envia todas as alterações como um lote para o repositório central no servidor."

"Esse método pode parecer um pouco excessivo quando você está escrevendo apenas um pequeno código. Mas quando suas tarefas são tão grandes que se estendem por semanas, você entende que não pode simplesmente escrever o tempo todo sem se comprometer."

"Por que você não pode simplesmente trabalhar por duas semanas e depois enviar suas alterações para o servidor uma vez?"

"Bem, um programa de controle de versão oferece muitas conveniências."

"Imagine que você se comprometa todos os dias e, no 10º dia, descubra que as alterações feitas nos últimos dois dias não funcionarão como planejado. E você deseja reverter para o código que tinha no 8º dia e abordar a tarefa diferentemente."

"Você simplesmente reverte as alterações feitas no repositório local nos últimos dois dias e retorna ao estado desejado. Isso é conhecido como operação de reversão ."

"Você está me dizendo que você pode fazer isso?"

"Sim. Além disso, como o histórico de commits é armazenado, você pode descobrir quando e por que algo foi commitado e por quem, os recursos/bugs relevantes e quais dez arquivos foram modificados simultaneamente como parte deste trabalho."

"Suponha que a correção de bug de alguém quebre o código de outra pessoa. Você pode simplesmente reverter ( reverter ) o código e continuar como se a alteração nunca tivesse acontecido."

"OK, isso é legal. Estou convencido. Você poderia me mostrar alguns exemplos ilustrando como tudo isso funciona?"

"Claro."

"Veja como você clona o repositório central em seu computador local:"

Commits e branches - 1

"Portanto, a operação de Checkout não é mais necessária."

"Sim. E aqui estão alguns exemplos de operações Push :"

Commits e branches - 2

"E operações pull :

Commits e branches - 3

"Ah. Isso faz mais ou menos sentido."

"A propósito, existe um serviço legal chamado GitHub."

"Qualquer programador pode se registrar lá e criar seus próprios repositórios Git. Sugiro que você se familiarize mais com ele."

"Aqui estão alguns links úteis:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"Observe que existem alguns clientes Git."

"Primeiro, há o   GitBash , que permite inserir comandos de texto."

"Depois há o TortoiseGit , que é um bom programa embutido no Windows Explorer. Ele permite que você trabalhe com arquivos em um repositório Git diretamente no Explorer."

"O IntelliJ IDEA oferece suporte ao Git e permite que você execute todos os tipos de comandos complexos com apenas alguns cliques diretamente no ambiente."

"Então, qual devo aprender?"

"Recomendo que você conheça todos eles."

"Você passará na entrevista e chegará ao trabalho. Receberá um link para o Git, um login e uma senha — e pronto. Então você estará por sua conta."

"O que você quer dizer com 'por conta própria'?"

"Quero dizer, você configurará o Git sozinho, obterá uma cópia do repositório sozinho..."

"E então você precisará construir e tentar executar o projeto."

"As instruções de construção provavelmente também estarão no repositório Git, junto com a documentação do projeto."

"Seu líder de equipe chegará até você à noite e dirá:  'Bem, o que você descobriu até agora?' "

"E você dirá: 'Estou tentando configurar o Git aqui, mas ainda não tive sucesso. «Você não vai me demitir, certo?» "

"Ou, enquanto ainda é meio-dia, você pode ir até o líder da equipe e dizer:  «Instalei o Git, puxei o projeto e naveguei pela documentação, mas existem centenas de arquivos e ainda não resolvi tudo. Onde são as instruções de construção atuais?'» "

"Você pode sentir a diferença?"

"Sim. No segundo caso, sou um programador superstar do rock, mas no primeiro sou um robo-idiota que nem sabe como extrair um projeto do Git. Em outras palavras, eu estraguei antes mesmo de começar a programar. Suponho que depois disso eles nem me deixariam escrever código."

"Veja, você respondeu às suas próprias perguntas. Então estude e descubra. Ninguém fará isso por você."

"Você não vai me ajudar?"

"Eu já ajudei. Estamos ensinando Java aqui, caso você tenha esquecido. Para todo o resto, você está por conta própria. Ou sua cabeça é só para beber?"

"Ok, entendi. Obrigado, Bilaabo!"