Git: Participando de um projeto OpenSource no GitHub – Comandos

Posted On 18 outubro, 2008

Filed under Dicas, Tutoriais
Tags: ,

Comments Dropped 2 responses

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.

Erro ao dar Push no repositório GIT

Posted On 2 outubro, 2008

Filed under Uncategorized
Tags: , ,

Comments Dropped 3 responses

Aqui vai um resumo de como eu resolvi esse problema 🙂

Eu sou novato tanto em GIT quanto em qualquer outro software de versionamento. nubei de mais XD

IMPORTANTE:

isso não é um tutorial, ou seja não siga os passos dele para obter um bom resultado, mas partes desse evento podem ser uma solução para seu problema. erros de português tem aqui aos montes… waaalleee!!

Bom quando fui dar o simples e corriqueiro git push no getna me veio o seguinte erro:

git push
To git@github.com:user/repo.git
! [rejected] branchname -> branchname (non-fast forward)
error: failed to push some refs to 'git@github.com:user/repo.git'

Após realizar uma pesquisa, logo veio a solução, como eu havia feito alterações no código em meu trabalho com uma versão mais antiga(a que estava no GIT) do que eu tinha em minha casa(esqueci de “pushar” o código) então necessitava dar um comando para pegar o código que estava no git

git pull

simples não?

Como retorno obtivemos

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git pull
remote: Counting objects: 28, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 17 (delta 7), reused 0 (delta 0)
Unpacking objects: 100% (17/17), done.
From git@github.com:LuizCarvalho/getna
   31ef4ca..3df45aa  master     -> origin/master
 * [new branch]      trunk      -> origin/trunk
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull  ').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.master.remote =
    branch.master.merge =
    remote..url =
    remote..fetch = 

See git-config(1) for details.

Bom… melhorou mais ainda não funcionou…

eu tinha uma certeza que devia fazer um merge… mas num sabia como fazer isso, dei um:

git checkout master

apareceu algumas coisas, ai achei que agora iria funcionar, é hora do merge:

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git merge trunk
trunk - not something we can merge

é acho que não funcionou… :(, no tutorial do Akita pareceu tão facil, nao entendi essa de não poder mesclar….

bom pensei um pouco eu tenho a seguinte situação

tenho:

getna V1(master) – github
getna V2(master) – em casa
getna V3(trunk) – github

hum, acho que eu baguncei de mais… acho que o que eu estou tentando é unir V2 e V3. mas e V1…

hum… esperem… isso pode funcionar vo fazer um teste.

git branch -a
* master
  origin/master
  origin/trunk

Opa. hum eu tentei dar um merge no master(V2)… que é o branch que eu estou no momento… e esse origin/master… acho que ele é o master que esta no github(V1)…vamos ver… o que é um peido pra que já esta cagado não é mesmo? 😀

git merge origin/master

generators/getna/doc/rdoc-style.css: needs update
generators/getna/templates_1/controller.rb: needs update
generators/getna/templates_1/functional_test.rb: needs update
generators/getna/templates_1/helper.rb: needs update
generators/getna/templates_1/layout.html.erb: needs update
generators/getna/templates_1/style.css: needs update
(...)
Auto-merged generators/getna/USAGE
CONFLICT (content): Merge conflict in generators/getna/USAGE
Automatic merge failed; fix conflicts and then commit the result.

OHHHHH!!! que isso? acho q agora sim *.*

Mas esperem, que negocio é esse de merge failed… vix… acho que não foi… hum vo tentar de novo eu gostei desse merge XD

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git merge origin/master
You are in the middle of a conflicted merge.

Ein? que isso ai agora? porque dessa vez não funcionou? :(, vo ver esse arquivo USAGE ai

<<<<<<< HEAD:generators/getna/USAGE
== Getna 

=======
script/generator getna xxx
>>>>>>> origin/master:generators/getna/USAGE

Que isso meu deus do céu??? O.o. De onde veio esse código doido?

Hum… esse é a tal das tags de conlfito…. vo resolver essa budega.. vo tirar a parte que eu n quero mais.

== Getna 

script/generator getna xxx

Aew. eu quero assim  =)

e agora… to com medo de c*gar de novo o código…. to nem ai XD

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git merge origin/master
You are in the middle of a conflicted merge.

Ué. mas eu resolvi essa carniça ai agorinha… O.o

deixa eu ver aqui.

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git status
generators/getna/USAGE: needs merge
# On branch master
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#
#    unmerged:   generators/getna/USAGE
#    modified:   generators/getna/USAGE

AAHHH, tô ligado… acho que vou ter q adicionar de novo pra funcionar.

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git add .

hum… acho que agora eu uso o tal do rebase… pra refazer todas as mudanças nos dois desde o incio. =) vamos ver o que dá.

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add

O.o, mas que p*rra… vo adicionar só  o arquivo agora.

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git add generators/getna/USAGE

Hum… deixa eu verificar o status de novo.

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    modified:   generators/getna/USAGE
#

Opa, animei de novo. agora parece tudo ok. vamos de novo:

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add

VSF!!! Q RAIOSSS!!!

vo desistir… ¬¬… sabe de uma coisa vo commitar assim mesmo, sei que não vai funcionar mas nasci pelado, careca e banguela… agora o que vier é lucro.

maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git commit -m "resolvendo conflitos"
Created commit 8284ddb: resolvendo conflitos
maxprox@maxprox-desktop:~/NetBeansProjects/GEtna/vendor/plugins/getna$ git push
Counting objects: 32, done.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (19/19), 4.49 KiB, done.
Total 19 (delta 7), reused 0 (delta 0)
To git@github.com:LuizCarvalho/getna.git
   3df45aa..8284ddb  master -> master

UAHuaHuHuHAuhAUAHUahUAhuHau

Yuhuuuuuuuu!!! YEAAHH!!!!

AMÉMMM!!!

XUPA QUE EH DE UVAAA!!

CREU CREU CREEUU!!

=) que louco! funcionou!

heheh

Viva AO GIT!

__________________-
__________________
_______________

Primeiros Passos com GitHub

Posted On 13 agosto, 2008

Filed under Dicas
Tags:

Comments Dropped one response

Olá

Depois de um tempinho sem postar (todos blogista fala isso) voltando com algo não tão novo.
quando você cria um repositório essas mensagens aparecem, bom é só seguir e vai estar tudo bom.

Mas sou uma pessoa de memoria não tão boa, e para relembrar os comandos tinha que criar outro repositório para ver como se fazia, então vou postar aqui que fica mais facil pra mim, e vai facilitar para os sem memorias como eu.

Go!

Global Setup:

git config –global user.email o_email_que_voce_cadastrou@xxx.com
EX: git config –global user.email maxonrails@gmail.com

Proximo Passo:

mkdir [repositorio]
cd [repositorio]
git init
touch README
git add README
git commit -m ‘first commit’
git remote add origin git@github.com:[Usuario]/[repositorio].git
git push origin master

mkdir getna
cd getna
git init
touch README
git add README
git commit -m ‘first commit’
git remote add origin git@github.com:Maxonrails/getna.git
git push origin master

Existindo o repositorio git…

cd repositorio_git
git remote add origin git@github.com:Maxonrails/getna.git
git push origin master