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.