Esses dias estava eu tentando convencer um amigo meu, o Zé, de o que usar o Github como "hub" (duh!) de projetos Git é muito interessante e paga a "complexidade" extra dos pulls, pushs e merges intermediários. A conversa é relativamente longa, mas divertida e rápida de ler.
Se você é teimoso como o Zé, pode servir pra entender melhor a idéia do Github e da dinâmica dos sistemas de controle de versão distribuídos:
Zé: vc liberou lá?
Hack: na verdade vc tem que fazer pull agora
Zé: xiiii
Zé: pull?
Hack: push é vc mandar do seu repositorio local pra algum lugar
Hack: pull é de algum lugar pro se repositorio
Zé: a gente aqui manda ver push mesmo
Zé: afinal, a minha é a última vrs
Zé: como é esse pull?
Hack: pera ai
Hack: vc quer puxar as minhas alterações ou enviar as suas?
Zé: mandar a minha
Hack: vc já atualizou com a minha?
Zé: sim sr
Hack: com o rails:freeze ?
Hack: ok
Zé: já escrevi o crawler e já quero mandar pro sr
Zé: se for possível
Zé: senao te mando os arquivos por email
Hack: para
Zé: ou gero um patch
Hack: ta doido
Hack: vc criou sua conta no github?
Zé: acho que já tenho
Zé: perai
Hack: depois vai no meu repositorio e clica em "fork"
Hack: isso vai criar um fork do meu repositorio na sua conta
Zé: xiiiiiii
Hack: q?
Zé: o que eu gosto mesmo no github é a simplicidade
Hack: bom, mas ai o problema não é o github
Hack: scm distribuido é assim p..rra
Hack: vai por mim, vc vai ver que é legal depois
Zé: cara, eu uso o git há mais de um ano
Zé: o github embassa
Hack: vc deve usar o git como usava o SVN
Zé: cade o lance do meu ssh direto?
Zé: hein?
Zé: nem velho... aqui git é moeda corrente
Zé: a gente troca versão um com o outro direto
Zé: mas tá, blz
Zé: vamos ao github
Hack: pois é, vc tem IP publico?
Hack: se tivesse daria
Zé: né
Hack: por isso o github é bom
Hack: e como vcs trocam versao direto sem o pull?
Zé: vc vai e clona, aí faz push de volta direto pro cara
Hack: ah, e todo mundo tem direito de escrita no repositorio do cara?
Zé: push ssh://maquinadoze/repo/projeto
Zé: quem ele quer né
Zé: isso rola entre os arquitetos
Hack: bom, geralmente vc clona o repositorio do zé, que é o tal do "fork"
Hack: ai vc diz pro zé, "zé, tem coisa aqui, veja se vc quer"
Hack: ai o zé vai lá e dá um pull no seu repositório
Hack: e ELE decide se o que vc fez entra ou não no repositório DELE
Zé: pois é
Zé: muuuito mais legal
Hack: ta zuando?
Hack: vai fazer o fork ou não mané?
Hack: ah, já ta lá
Hack: agora vc faz o clone pra sua máquina
Hack: ou "checkout", se quiser pensar "svn"
Hack: coloca as alterações que vc fez nesse clone
Hack: e dá um push
Hack: ai eu pego
Hack: detalhe: vc clona o SEU repositorio, não o meu
Zé: ou seja, lixo
Zé: lixo lixo lixo lixo
Hack: não vou discutir
Hack: ta bom vai, vou discutir um pouquinho
Hack: o github facilita pro caso como o nosso
Hack: o github na verdade é um servidor com IP publico que agente usa como um "espelho" dos respositorios que estao na nossas maquinas
Hack: mas eu nao acesso a sua maquina diretamente, assim como vc poderia ter desligado seu laptop e ido tomar um suco de laranja com acerola
Hack: e ai, como eu pegaria as suas alteracoes pra continuar trabalhando?
Hack: e como pessoas que nem se conhecem podem colaborar cada um no seu timezone, e etc, etc, etc
Hack: eles usam o github
Hack: legal né?