Comandos básicos para manejarse con Git y GitHub

Github se ha convertido en un referente para el desarrollo de software libre. Se podría decir que es una social network de código donde se alojan grandes proyectos cómo Bootstrap, HTML5Boilerplate.

La magía de Github es la facilidad de manejo de proyectos, colaboradores y por supuesto la posibilidad que ofrece para contribuir con aquellos que encontremos más interesantes. Sin duda se ha convertido en un punto de encuentro para los desarrolladores.

Qué es Github

Básicamente Github es un servicio de alojamiento de repositorios de software que ofrece opciones muy interesantes para trabajar en equipo. GitHub está basado en Git, un sistema de control de versiones muy popular entre los desarrolladores.

Manejando Git y GitHub

Vamos a ver como instalar Git en nuestra computadora así como vincular y gestionar un repositorio con GitHub para llevar un control de versiones de nuestro proyecto.

Instalación de Git en Mac OS X

La instalación es muy sencilla y aunque GitHub dispone de un software propio con interfaz gráfica para Mac OS X, nosotros instalaremos la versión que se maneja desde la terminal. Para ello utilizaremos la herramienta brew de Mac OS X.

$ brew install git

Si estáis en Linux en una versión basada en la distribución Debian podéis instalar Git con:

$ apt-get install git-core

Si preferís podéis bajaros la versión con interfaz gráfica de GitHub tanto para Windows como Mac OS X.

Configurando Git

Es importante configurar Git una vez tenemos una instalación correcta. Para ello:

$ git config --global user.name "David" 
$ git config --global user.email "[email protected]"
Vinculación de nuestra computadora con GitHub

Una vez terminada la configuración de Git, tenemos que vincular nuestro ordenador con GitHub para establecer una relación de confianza. Para esto tendremos que generar una SSH Key que posteriormente daremos a GitHub.

$ ssh-keygen -t rsa -C “[email protected]

Una vez generada la key vamos a visualizarla.

Deberemos indicar nuestra clave SSH a GitHub por lo que dentro de “Account Settings” en “SSH Keys” pegaremos la clave que acabamos de generar.

Creando un repositorio en GitHub

A continuación vamos a crear un nuevo repositorio desde la Web de GitHub. Esto se puede hacer de manera muy sencilla pulsando el botón “Create new repo” situado a la derecha de nuestro nombre de usuario.

Inicialización el repositorio de Git en nuestra computadora

Vamos a crear en nuestra computadora una nueva carpeta donde vamos a almacenar el proyecto que acabamos de crear en GitHub. Es recomendable tener una estructura limpia de carpetas para no perderse entre los proyectos. Por ejemplo podemos tener una carpeta y dentro de ella subcarpetas para cada uno de los proyectos que estemos trabajando.

Una vez tenemos la carpeta creada, nos situaremos dentro de ella e inicializaremos el repositorio con el siguiente comando.

$ git init
Creando un nuevo archivo, nuestro primer commit y enviándolo al respositorio

Ya podemos empezar a trabajar por lo que empezaremos con la creación de un fichero README con el cual indicaremos de que se trata el proyecto.

$ vi README.md

Pulsamos ESC y :wq para guardar y salir del fichero. Así mismo debemos añadir a Git los ficheros modificados.

$ git add README.md

Ahora vamos a indicar a Git un comentario sobre las modificaciones que hemos realizado en el fichero (esto es un commit) ya que de lo contrario no podremos enviar los cambios al repositorio.

$ git commit -m “Mi primera contribucion al proyecto”

Como vemos en la captura Git se ha enterado de los cambios realizados. Ahora vamos a conectar nuestro repositorio local con el repositorio que tenemos creado en GitHub. Esto será necesario únicamente la primera vez que queramos conectar el repositorio. Es importante tener la dirección de nuestro repositorio a mano.

$ git remote add origin [email protected]:dreyacosta/testing-github.git

Una vez conectados los repositorios ya podemos enviar los cambios hacia GitHub.

$ git push origin master
Viendo los cambios en GitHub

Si accedemos a GitHub podemos ver los cambios enviados y en la pestaña “Commits” todas las modificaciones que se van realizando en el proyecto por los diferentes colaboradores.

Como véis una excelente manera de mantener un historial de cambios de un proyecto.

Branches y otros comandos interesantes

Además de estos comandos básicos existen algunos otros interesantes. Sin duda los comandos que nos permiten manejar “Branches” son muy útiles.

Las “Branches” se utilizan para crear diferentes entornos de desarrollo. Por ejemplo podemos tener un branch “dev” de desarrollo donde se harán todas las pruebas experimentales y otro branch “master” de producción donde se queden los cambios definitivos y funcionales.

# CREANDO UN NUEVO BRANCH
$ git branch nombredelbranch

# CAMBIARSE DE BRANCH
$ git checkout nombredelbrach

# VIENDO LOS BRANCHES DEL PROYECTO
# (el asterisco indica el branch donde estamos)
$ git branch

# UNIFICANDO BRANCHES
# (esto actualiza el branch donde estamos con los
# cambios que tenga el branch que indiquemos)
$ git merge NombreDelBranchAunificar

Por supuesto además de todos estos comandos disponemos de muchos más para manejar Git desde la terminal, así que lo único que queda es que los pongas en práctica.

usage: git [--version] [--exec-path[=]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=] [--work-tree=] [--namespace=]
           [-c name=value] [--help]
           command [args]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and merge with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG