Git en GNU/Linux tengo problemas y dudas :(

Todos los comentarios sobre redes y servidores en linux y su interacción con otros sistemas operativos.

Moderadores: doc, Kde_Tony, ps-ax

Responder
Avatar de Usuario
Diabliyo
Forista Medio
Forista Medio
Mensajes: 372
Registrado: Jue Abr 29, 2004 7:00 am
Contactar:

Git en GNU/Linux tengo problemas y dudas :(

Mensaje por Diabliyo » Sab Ene 08, 2011 4:59 am

Buenas...

Me he instalado localmente el GIT para mantener bien organizados mis proyectos, esto con la finalidad de subir mis cambios a mi Servidor Dedicado (tambien he instalado GIT igual que en mi Equipo Local).

En si el proceso de instalacion es sencillo, simplemente se compilan las fuentes y ya esta funcionando...

Para tener mejor organizado mi equi Local, he creado un directorio (mas NO un usuario) en /home/, llamada: git (/home/git), dentro pongo mis proyectos, asi:

Código: Seleccionar todo

shell# cd /home/git/
shell# mkdir proyecto1.git
shell# cd proyecto1.git/
shell# git init
shell# echo "prueba" > dato.txt
shell# git add .
OJO: todo lo realizo como ROOT.

Tambien configure mi Apache para visualizar el git: http://localhost/git...

MI PROBLEMA es que no se como puedo por ejemplo, con mi cuenta de usuario normal, una vez que he creado mis repositorios por ejemplo en: /home/miusuario/Documentos/git/proyectA.git, como puedo subirlo a mi Equipo Local ?...

Intente asi:

Código: Seleccionar todo

# OJO: soy usuario comun aqui, NO soy root

shell$ cd /home/miusuario/Documentos/git/proyectoA.git/

shell$ git push http://localhost/git  # sale error
fatal: http://localhost/git/info/refs not found: did you run git update-server-info on the server?

shell$ git push git://localhost/git
fatal: The remote end hung up unexpectedly
Alguien que me oriente !!...

Saludos !
Avatar de Usuario
ramonovski
Forista Medio
Forista Medio
Mensajes: 398
Registrado: Lun Sep 06, 2010 4:30 am

Re: Git en GNU/Linux tengo problemas y dudas :(

Mensaje por ramonovski » Sab Ene 08, 2011 11:41 am

¿Pero para qué hacer un push a tu mismo servidor local?

Yo simplemente copio y pego a mi directorio de git, luego el commit y al final el "push origin master", hasta tengo un alias para hacer todo en uno =P

No entendí realmente la duda, espero tú segundo post =P
scrotwm@FreeBSD
pekwm@Sabayon
::vim::zsh::urxvtd|blog::dotfiles::last.fm
fpuga
Forista Mayor
Forista Mayor
Mensajes: 798
Registrado: Sab Ago 25, 2007 7:00 am
Ubicación: Galicia - España
Contactar:

Re: Git en GNU/Linux tengo problemas y dudas :(

Mensaje por fpuga » Sab Ene 08, 2011 2:16 pm

Yo tampoco lo he entendido.

Git es un sistema de control de versiones distribuído. En teoría todos los nodos tienen el mismo "pòder". No necesitas un servidor externo, si sólo vas a trabajar tu en el proyecto.
Mi blog: [url=http://conocimientoabierto.es]Conocimiento Abierto[/url]
Avatar de Usuario
Diabliyo
Forista Medio
Forista Medio
Mensajes: 372
Registrado: Jue Abr 29, 2004 7:00 am
Contactar:

Re: Git en GNU/Linux tengo problemas y dudas :(

Mensaje por Diabliyo » Mar Ene 11, 2011 5:05 am

ramonoid escribió:¿Pero para qué hacer un push a tu mismo servidor local?

Yo simplemente copio y pego a mi directorio de git, luego el commit y al final el "push origin master", hasta tengo un alias para hacer todo en uno =P

No entendí realmente la duda, espero tú segundo post =P
Hacer push a mi mismo servidor Local, es simplemente hacer PRUEBAS porque la idea es subir de mi servidor local a mi servidor dedicado en internet.

Vaya, mi solucion asi rapida es:
1- Abro el FTP.
2- Subo TODOS los archivos a mi directorio en el Servidor Dedicado (/home/git/).
3- Me conecto al Servidor Dedicado (via SSH) y hago: git add. y git commit -a "dato".

El problema es que, y que pasa cuando el codigo es muy grande ?, digo... Que existan librerias de hasta 10MB ?, se estaria re-subiendo los 10MB cada vez que copiamos todo el codigo :S, asi que, me gustaria mas hacer algun push y que el mismo GIT lo suba a mi servidor dedicado.

1- Trabajo en mi Git Local.
2- Lo subo al Git en linea (mi servidor dedicado).

Saludos !

Editado -- Mar Ene 11, 2011 12:53 pm --

Creo que ya lo voy logrando, pero algo falla :S, miren les relato desde el principio:

1- Me conecto al Servidor Dedicado y hago:

Código: Seleccionar todo

shell# ssh -l miusuario miservidor.com
shell$ su
Password:

shell# cd /home/git/
shell# mkdir prueba
shell# cd prueba/
shell# git init
shell# echo "estoy en servidor dedicado" > dedicado.txt
shell# git add .
shell# git commit -am "Srv Dedicado"
shell# exit
shell# exit
2- En mi servidor Local

Código: Seleccionar todo

shell$ su
Password:

shell# cd /home/git/
shell# mkdir prueba
shell# cd prueba/
shell# git init
3- Ahora la sincronicazion de Repos

Código: Seleccionar todo

shell# git pull diabliyo@git.miservidor.com:/home/git/data
diabliyo@git.miservidor.com's password: 
From git.miservidor.com:/home/git/data
 * branch            HEAD       -> FETCH_HEAD
Already up-to-date.
4- Creacion del Documento en Local

Código: Seleccionar todo

# en Servidor Local, ya esta el archivo "dedicado.txt"

shell# echo "estoy en el local" > local.txt
shell# git add .
shell# git commit -am "Srv Local"

# subiendo novedades
shell# git push diabliyo@git.miservidor.com:/home/git/data
diabliyo@git.crver.net's password: 
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 479 bytes, done.
Total 5 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error: 
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error: 
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To diabliyo@git.miservidor.com:/home/git/data
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'diabliyo@git.miservidor.com:/home/git/data'
Y finalmente, en mi Servidor Local, tengo el archivo dedicado.txt, pero en el Servidor Dedicado las cosas estan intactas, vaya, no esta subido el archivo local.txt.

Alguna idea ?
fpuga
Forista Mayor
Forista Mayor
Mensajes: 798
Registrado: Sab Ago 25, 2007 7:00 am
Ubicación: Galicia - España
Contactar:

Re: Git en GNU/Linux tengo problemas y dudas :(

Mensaje por fpuga » Mié Ene 12, 2011 2:18 pm

Te pego de esta página lo que hay que hacer para configurar git.

En remoto:

Código: Seleccionar todo

$ ssh myserver.com
Welcome to myserver.com!
$ mkdir /var/git/myapp.git && cd /var/git/myapp.git
$ git --bare init
Initialized empty Git repository in /var/git/myapp.git
$ exit
En local:

Código: Seleccionar todo

$ cd ~/Sites/myapp
$ git remote add origin ssh://myserver.com/var/git/myapp.git
$ git push origin master
A partir de aquí ya podrías trabajar con git en local de forma normal. Escribes código en local, haces los commits que te interesen, mergeas ramas, ... y cuando quieras lo subes a remoto con git push o te lo bajas con git pull --rebase

Puedes echarle un vistazo también a esto que escribí en mi blog.
Mi blog: [url=http://conocimientoabierto.es]Conocimiento Abierto[/url]
Avatar de Usuario
Diabliyo
Forista Medio
Forista Medio
Mensajes: 372
Registrado: Jue Abr 29, 2004 7:00 am
Contactar:

Re: Git en GNU/Linux tengo problemas y dudas :(

Mensaje por Diabliyo » Vie Ene 14, 2011 1:32 am

Pues salio pero amigo :(...

Si ejecuto git --bare init en el dedicado, noto que toda la informacion que se crea en .git (directorio oculto), se pone directamente en la raiz del proyecto, por lo cual, cuando estoy en mi Equipo Local, me sale este error:

Código: Seleccionar todo

shell# cd /home/git/mi_proyecto/
shell# git push miuser@miservidor.com:/home/git/mi_proyecto/
fatal: Couldn't find remote ref HEAD
fatal: The remote end hung up unexpectedly
Anteriormente salia otro error (ver post arriba), pero ahora si no se que hacer con esto :S, y ademas, si hago pull simplemente no encuentra el HEAd tampoco.

Editado -- Vie Ene 14, 2011 9:32 am --

Ya pude subir mis actualizaciones :D, pero.... no se va al branch master.

Quizas el problema es que el branch master no tiene permisos para que los remotos lo actualicen...

Pero mi solucion de momento fue entrar al servidor dedicado, crear un branch X y dejarlo existente para que cuando un Remoto suba actualizaciones, utilice ese branch, el unico [/b]problema[/b] con esta modalidad, es que el master nunca se actualiza, es necesario entrar al Servidor Dedicado (por SSH) y actaulizarlo (git merge X).

El proceso fue:

Servidor Dedicado

Código: Seleccionar todo

shell# cd /home/git/
shell# mkdir proyecto  // creamos proyecto
shell# git init  //inicializamos SIN utilizar "--bare"
shell# git branch  // vemos los branch, solo tenemos a master
* master

// creamos el branch "dev" que usare para actualizar
shell# git branch dev
shell# git branch
* master
dev
En el Servidor Local (mi equipo)

Código: Seleccionar todo

shell# /home/miusuario/codigos/
shell# mkdir proyecto
shell# cd proyecto
shell# git init
shell# echo "prueba de texto" > hola.txt
shell# git add .
shell# git commit -am "estoy en Srv Local"

// subiendo al repositorio Servidor Dedicado
shell# git push diabliyo@git.miservidor.com:/home/git/proyecto dev
Ahora ya tenemos todo UP en el Servidor Dedicado, el problema es que solo se refleja cuando entras al branch dev, y para que master lo refleje, es necesario entrar y emerger.

Código: Seleccionar todo

// estoy en servidor Dedicado
shell# cd /home/git/proyecto
shell# git branch
* master
dev

// estoy hara que el branch "dev" actualize al branch "master"
shell# git merge dev
Y listo....

Agradeceria quien me dijera como hacerle para poder subir las cosas directo al branch master, porque si lo intento, me dice este error:

Código: Seleccionar todo

Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 479 bytes, done.
Total 5 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error: 
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error: 
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To diabliyo@git.miservidor.com:/home/git/data
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'diabliyo@git.miservidor.com:/home/git/data'
fpuga
Forista Mayor
Forista Mayor
Mensajes: 798
Registrado: Sab Ago 25, 2007 7:00 am
Ubicación: Galicia - España
Contactar:

Re: Git en GNU/Linux tengo problemas y dudas :(

Mensaje por fpuga » Sab Ene 15, 2011 12:44 pm

La parte del servidor local prueba a hacerla de este modo:

Código: Seleccionar todo

mkdir /tmp/el-repo-local
cd /tmp/el-repo-local 

git init
echo "some text" > README
git add README
git commit -m "initial commit"

git remote add origin ssh://myserver.com/var/git/myapp.git
git push origin master
y a continuación en otro directorio distinto

Código: Seleccionar todo

git clone ssh://myserver.com/var/git/myapp.git
// do some hacking
git commit -m "hacking message"
git push
Mi blog: [url=http://conocimientoabierto.es]Conocimiento Abierto[/url]
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje