RSS

GitHub , repositorio remoto de Git

26 Ago

git-logo

En este post vamos a hablar de GitHub. ¿Y qué es GitHub?. GitHub según su página web es:

GitHub is the best way to collaborate with others. Fork, send pull requests and manage all your public and private git repositories.

O lo que es lo mismo GitHub es un herramienta que te permite crear tus propios repositorio usando Git de manera que éstos ya no estén solamente alojados en tu máquina local si no en máquinas remotas donde otros usuarios pueden ver lo que están haciendo y colaborar, si es el caso, en el proyecto.

Lo primero que tenemos que hacer es registrarnos en la página web para poder crear nuestros repositorios. El proceso es muy sencillo y no nos tomará más de un par de minutos. Tras registrarnos ya podemos acceder a nuestra cuenta.

Podemos ver que existen unos enlaces a como configurar el sistema para utilizar GitHub y git en nuestro proyecto. Son estos enlaces los que vamos a seguir en este post.

createGitRepository

createGitRepository

Si todavía no hemos creado un repositorio en nuestra cuenta de GitHub, se nos muestra en la pestaña de Source una pequeña guía con los comandos que tenemos que realizar si queremos subir sincronizar nuestro repositorio local con el de GitHub.

SetUpRepository

SetUpRepository

Adicionalmente hay una herramienta gráfica para GitHub. Esta herramienta nos permite gestionar nuestros repositorios locales con los subidos en GitHub.

GitHubForMac

GitHubForMac

Desafortunadamente sólo está para sistemas MAC y más desafortunadamente sólo para aquellos que cumplan con la versión de sistema operativo 10.6 de 64-bit. Para los demás queda esperar a que la gente de GitHub se animen a sacar versión para el resto de S.O. ya sean MAC, Linux, …. En cualquier caso todo lo que podemos hacer desde la interfaz gráfica se puede hacer en modo consola como vamos a ver.

Después de registrarnos y crear un repositorio vamos a la parte de setup de nuestro sistema. La verdad es que viene todo explicado paso a paso en la propia página web. Aquí sólamente enumero y muestro como he creado mi repositorio local en mi máquina. Los pasos son los siguientes:

  • Nos bajamos la última versión de git a nuestra máquina aquí.

  • Creamos (si no lo están ya un par de claves que nos permitirá identificarnos contra el repositorio remoto de GitHub).

  • Añadimos estas claves en la administración de GitHub y comprobamos que todo va correcto. Todo ello está perfectamente explicado en la pestaña Source.

  • En mi caso y por consola :

    new-host:~ Ivan$ cd .ssh/
    new-host:.ssh Ivan$ ls
    authorized_keys	id_rsa		id_rsa.pub	known_hosts
    new-host:.ssh Ivan$ mkdir backup_old
    new-host:.ssh Ivan$ cp * backup_old/
    cp: backup_old is a directory (not copied).
    new-host:.ssh Ivan$ cd backup_old/
    authorized_keys  id_rsa           id_rsa.pub       known_hosts
    new-host:.ssh Ivan$ ssh-keygen -t rsa -C "ivan.fernandez.perea@gmail.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/Ivan/.ssh/id_rsa): 
    /Users/Ivan/.ssh/id_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /Users/Ivan/.ssh/id_rsa.
    Your public key has been saved in /Users/Ivan/.ssh/id_rsa.pub.
    The key fingerprint is:
    22:ad:93:7f:22:c2:40:dd:4f:59:5b:68:09:b6:6b:48 ivan.fernandez.perea@gmail.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    |       o. o      |
    |      . .= .     |
    |  . .E .= .      |
    | . ..o.o..       |
    |.   ..=oS        |
    |.    o.o         |
    |o.  .            |
    |...o. .          |
    |  oo.o           |
    +-----------------|
    new-host:.ssh Ivan$ cat id_rsa.pub 
    ssh-rsa zaC1yc2EAAAABIwAAAQEAr+W2xOI4XFhyet1iVakDbYSBwFst0t0y70t8jzg84rRyOi1MI7Sp5hpgWRJZX43fitblZXQXy6pk2Yf8U6LtP7G9gkn1ywFx0wQQn/Lk7Va8gNH7lDGtSgVaXbzNOMryvPtHWcOcVgKLlgDaDSXMoyxWfIifUrRGGWQBcpQFo7w/EA6Ftta/y3KYOI7b8yB56ZbHI6+vQE6Jirpd/zaiJu1fV21YHQc42S3393V7muGdFPLAuAniMjcbAsRW/tkyq5JEEsL+HHVyhBOk3MYGhM82IdSNQ8oFB69jSd8QGyS1SVp7PHSes4rBjYSAEXQpnFTaBlN== ivan.fernandez.perea@gmail.com
    new-host:.ssh Ivan$ ssh -T git@github.com
    Hi IvanFernandez! You've successfully authenticated, but GitHub does not provide shell access.
    new-host:.ssh Ivan$ git config --global user.name "Ivan Fernandez"
    new-host:.ssh Ivan$ git config --global user.email "ivan.fernandez.perea@gmail.com"
    new-host:.ssh Ivan$ git config --global github.user IvanFernandez
    new-host:.ssh Ivan$ git config --global github.token f0c380f8a02b9b3f6b84155276
    

    En estos pasos simplemente hemos tenido que crear una clave pública que será necesario para autentificarnos sobre nuestra cuenta de GitHub. Podemos ver en la siguientes imagenes como hemos añadido nuestra clave generada en la sección de administración de GitHub.

    AddingSSHKeys

    AddingSSHKeys

    SSHKeyAdded

    SSHKeyAdded

    Ahora vamos a crear nuestro repositorio en local y le vamos a añadir un fichero README que aparecerá en la página de inicio de nuestro repositorio. Como en el paso anterior viene perfectamente explicado en la ayuda de Git. Vamos a ver en mi caso:

    new-host:git Ivan$ mkdir hop2croftRepository
    new-host:git Ivan$   cd hop2croftRepository
    new-host:hop2croftRepository Ivan$   git init
    Initialized empty Git repository in /Users/Ivan/git/hop2croftRepository/.git/
    new-host:hop2croftRepository Ivan$   touch README
    new-host:hop2croftRepository Ivan$ vi README 
    new-host:hop2croftRepository Ivan$ git add README
    new-host:hop2croftRepository Ivan$   git commit -m 'commit para README'
    [master (root-commit) 08717dc] commit para README
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 README
    new-host:hop2croftRepository Ivan$ git remote add origin git@github.com:IvanFernandez/hop2croftRepository.git
    new-host:hop2croftRepository Ivan$   git push -u origin master
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 267 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To git@github.com:IvanFernandez/hop2croftRepository.git
     * [new branch]      master -> master
    Branch master set up to track remote branch master from origin.
    

    Fijaros como hemos tenido que realizar todos los pasos que explicabamos en Git como herramienta de control de versiones. Es decir, creo el repositorio local y lo inicializo. Si quiero añadir un fichero a éste lo primero que tengo que hacer es añadir al repositorio (README pasa de modified a staged). Finalmente (siempre hablando de la parte local) tengo que hacer un commit (README pasa de staged a commited).

    Nos queda ‘sincronizar’ nuestro repositorio local con nuestro repositorio remoto en GitHub. Para ello que hacer un git remote para indicar la fuente y el destino, y por último un git push para subir mis ficheros (en este caso el README).

    Hop2CroftRepositoryREADMEAdded

    Hop2CroftRepositoryREADMEAdded

    Quedan fuera de este post como unirse a un proyecto git y el apartado ‘ser social’. Pero no está de más echarle un vistazo. Puedes unirte a otros proyectos desarrollados y que están en GitHub.

    Lo que vamos a hacer es subir uno de los proyecto Vaadin que tengo pensado subir en un próximo post. Es igual de fácil que lo que hemos ido haciendo hasta ahora.

    new-host:hop2croftRepository Ivan$ ls
    README	vaadin
    new-host:hop2croftRepository Ivan$ cd vaadin/
    pom.xml  src/     target/  
    new-host:hop2croftRepository Ivan$ git add -A
    new-host:hop2croftRepository Ivan$ git commit -m 'proyecto vaadin formulario'
    [master 09c657a] proyecto vaadin formulario
     38 files changed, 673 insertions(+), 0 deletions(-)
     create mode 100644 .classpath
     create mode 100644 .project
     create mode 100644 .settings/.jsdtscope
     create mode 100644 .settings/org.eclipse.jdt.core.prefs
     create mode 100644 .settings/org.eclipse.wst.common.component
     create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml
     create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container
     create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name
     create mode 100644 .settings/org.maven.ide.eclipse.prefs
     create mode 100644 vaadin/pom.xml
     create mode 100644 vaadin/src/main/java/com/hopcroft/vaadin/Car.java
     create mode 100644 vaadin/src/main/java/com/hopcroft/vaadin/CarApplication.java
     create mode 100644 vaadin/src/main/java/com/hopcroft/vaadin/CarForm.java
     create mode 100644 vaadin/src/main/java/com/hopcroft/vaadin/MyContainer.java
     create mode 100644 vaadin/src/main/java/com/hopcroft/vaadin/MyFieldFactory.java
     create mode 100644 vaadin/src/main/webapp/META-INF/MANIFEST.MF
     create mode 100644 vaadin/src/main/webapp/META-INF/context.xml
     create mode 100644 vaadin/src/main/webapp/WEB-INF/web.xml
     create mode 100644 vaadin/target/classes/com/hopcroft/vaadin/Car.class
     create mode 100644 vaadin/target/classes/com/hopcroft/vaadin/CarApplication$1.class
     create mode 100644 vaadin/target/classes/com/hopcroft/vaadin/CarApplication$2.class
     create mode 100644 vaadin/target/classes/com/hopcroft/vaadin/CarApplication.class
     create mode 100644 vaadin/target/classes/com/hopcroft/vaadin/CarForm.class
     create mode 100644 vaadin/target/classes/com/hopcroft/vaadin/MyContainer.class
     create mode 100644 vaadin/target/classes/com/hopcroft/vaadin/MyFieldFactory.class
     create mode 100644 vaadin/target/maven-archiver/pom.properties
     create mode 100644 vaadin/target/vaadin-example-1.0.war
     create mode 100644 vaadin/target/vaadin-example-1.0/META-INF/MANIFEST.MF
     create mode 100644 vaadin/target/vaadin-example-1.0/META-INF/context.xml
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/classes/com/hopcroft/vaadin/Car.class
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/classes/com/hopcroft/vaadin/CarApplication$1.class
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/classes/com/hopcroft/vaadin/CarApplication$2.class
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/classes/com/hopcroft/vaadin/CarApplication.class
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/classes/com/hopcroft/vaadin/CarForm.class
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/classes/com/hopcroft/vaadin/MyContainer.class
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/classes/com/hopcroft/vaadin/MyFieldFactory.class
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/lib/vaadin-6.6.4.jar
     create mode 100644 vaadin/target/vaadin-example-1.0/WEB-INF/web.xml
    new-host:hop2croftRepository Ivan$ git push -u origin master
    Counting objects: 51, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (37/37), done.
    Writing objects: 100% (50/50), 7.85 MiB | 84 KiB/s, done.
    Total 50 (delta 1), reused 0 (delta 0)
    To git@github.com:IvanFernandez/hop2croftRepository.git
       08717dc..09c657a  master -> master
    Branch master set up to track remote branch master from origin.
    

    Ahora podemos ver nuestro proyecto de Vaadin subido a nuestro repositorio de GitHub. Podemos dejarlo como un proyecto privado o abrirlo al resto de desarrolladores para que lo descarguen o para que colaboren en él.

    VaadinApplication

    VaadinApplication

    Igualmente podemos acceder y ver los commits hechos sobre el repositorio y su actividad reciente.

    CommitHistory

    CommitHistory

    PublicActivity

    PublicActivity

    Aunque ya hemos dicho no podemos acceder a la interfaz gráfica de GitHub a menos que tengamos un sistema MAC con unas determinadas especificaciones. De cualquier modo siempre podemos usar la consola y para ver en local nuestro repositorio el programa GitX para Mac o cualquier otro de esta lista.

     
3 comentarios

Publicado por en 26 agosto, 2011 en GIT, GitHub, SCM

 

Etiquetas: , , ,

3 Respuestas a “GitHub , repositorio remoto de Git

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: