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