Git: Participando de um projeto OpenSource no GitHub - Comandos

Então, Coloquei esse titulo porque não achei outro que descrevesse o que estou postando, então vamos a esplicação.

Estou trabalhando no GEtna (Lê se Guetna[GET+na] e não Jetna :) ) em casa e no trabalho as vezes faço umas modificações e as sempre esqueço de dar push de minha casa ou no trabalho, quando tento dar push de algum dos dois dá a maior zica, encontrei a solução para o meu problema, mas ai estou com outro bem chato que me acompanha desde que começei com git, a terrivel e enjoada mensagem:

fatal: protocol error: expected sha/ref, got '
*********'

You can't push to git://github.com/user/repo.git
Use git@github.com:user/repo.git

*********'

Como eu tenho ódio disso ai, então fui as pesquisas, demorei bastante até entrar em um gist que me levou até um post do blog do Nathaniel Felsen, e ai consegui resolver meus problemas. ok vamos lá.

Ao tentar dar um:

$ git push

Eu me deparei com o erro acima a solução encontrada é seguir os passos a seguir, usei o GEtna como exemplo:

O Caminho Certo (the Right Way)

Já vou adiantando os passos necessários para que você resolva seu problema são P6 e P8.

Esses comandos foram feitos no respositorio de local para um branch chamado working:

P1-$ git clone git://github.com/LuizCarvalho/getna.git
P2-$ cd getna
P3-$ git branch --track master origin/master
P4-$ git branch working master
P5-$ git checkout working
P6-$ git remote add working git@github.com:LuizCarvalho/getna.git
P7-$ git fetch working
P8-$ git push working working:refs/heads/working
P9-$ git config branch.working.remote working
P10-$ git config branch.working.merge refs/heads/working

Esplicando cada comando mais detalhadamente

Primeiro passo: Clonar o repositório

$ git clone git://github.com/LuizCarvalho/getna.git

Segundo passo: Entre dentro do diretório (Não tente atravessar o monitor, use o comando cd O.o)

$ cd getna

Passo três: esse eu não entendi, mas coloquei XD, como não testei não sei dizer pra que serve, mas se está no maneira certa de fazer eu não podia tirar  :), na versão original ao invés de master está edge, como não tenho nenhum branch edge coloquei meu master mesmo.

$ git branch --track master origin/master

Passo quatro:  Criando a branch Working a partir do meu master, assim eu faço meus merges (*.*) depois com mais calma

$ git branch working master

Passo cinco: Mudando de Branch (da atual para working)

$ git checkout working

Passo Seis: Adicionando Referências remotas ao meu repositório

$ git remote add working git@github.com:LuizCarvalho/getna.git

Passo Sete: Buscando e sincronizando o repositório local com o remoto

$ git fetch working

Passo 7,5: Na verdade não existe esse passo lá, mas eu achei que deveria ter algo assim O.o pra ter um caminho completo, pois se você realizou modificações no projeto você necessita comitar antes de enviar então:

$ git commit -a -m "Descrição das Alterações"

Passo Oito: Dando Push no repositório. Opa, agora é a hora de dar errado, depois de tanto trabalho o truque estava no passo 6,7 e 8, essa seqüência é a seqüência que deve ser realizada para não se obter aquele erro indesejável. :).

$ git push working working:refs/heads/working

Passo Nove e Dez: SImplificando o trabalho. Agora que nosso novo branch está no repositório remoto, iremos simplificar nosso trabalho, configurando nosso push para sempre "empurrar" o código de nosso gerador sempre para esse repositório.

$ git config branch.working.remote working$ git config branch.working.merge refs/heads/working

Com isso necessita-se apenas de um comando para enviar nossas alterações:

$ git push

Bem melhor não? para buscar no repositório basta um

$ git pull

Espero que isso ajude, pois pra mim isso foi muuito útil.

até a proxima.