Skip to content

Instantly share code, notes, and snippets.

@bhserna
Last active August 29, 2015 14:07
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bhserna/84b14033a2dd56b49129 to your computer and use it in GitHub Desktop.
Save bhserna/84b14033a2dd56b49129 to your computer and use it in GitHub Desktop.
Git training wheels

Esta es una pequeña guía aprenderas lo suficiente de git para integrarte a tu equipo de desarrollo. Esta guía NO pretende enseñarte los detalles del funcionamiento de git, ni cada posible funcionalidad.

¿Que es git?

Git es un programa que ayuda a que la gente pueda escribir software en equipo sin que todos esten trabajando en la misma computadora. Ayuda a que tu y yo podamos estar trabajando en el mismo programa pero tu en tu computadora y yo en la mía, es más tu en tu casa y yo en la mía.

Con git puedes trabajar de muchas formas diferentes pero para que tu y yo, o mas bien tu con tu equipo puedan trabajar juntos tienen que establecer un flujo que todos puedan seguir. Yo te propongo uno que siento que para mi es el más sencillo y aparte es muy fácil seguirlo si usas github.

Instalar git

Hay muchas guías para instalar git, puedes usar esta: http://git-scm.com/book/en/v2/Getting-Started-Installing-Git

Iniciar un proyecto

Suponiendo que tu proyecto se llama "miproyecto"

  • Creas la carpeta del proyecto en tu computadora
$ mkdir miproyecto
  • Vas a la carpeta e inicias un repositorio de git
$ cd miproyecto
$ git init
  • Vas a tu editor y creas un archivo README.text (readme driven development?)
  • Agrega el archivo a los cambios que serán persistidos
$ git add README.text
  • Haces tu primer commit
$ git commit -m "Initial commit"
  • Vas a tu cuenta de Github y creas un proyecto con el nombre "miproyecto"
  • Copias el url (que podría ser algo como "git@github.com:bhserna/miproyecto.git")
  • Asignas el remote en tu proyecto
$ git remote add origin git@github.com:bhserna/asdf.git
  • Y envias tu proyecto a github
$ git push -u origin master
  • Ahora puedes compartir ese proyecto con tu equipo =)

Unirte a un proyecto ya existente

Imagina que alguien ya creo el proyecto "miproyecto" y vas a empezar a colaborar. Lo primero que tienes que hacer es bajar el repositorio a tu maquina. Para eso sigues los siguientes pasos:

  • Obten acceso al proyecto en github
  • Copia el url del repositorio de git (que podría ser algo como "git@github.com:bhserna/miproyecto.git")
  • Clona el repositorio en tu maquina (yo usare este url "git@github.com:bhserna/miproyecto.git" pero tu pon el que copiaste)
$ git clone git@github.com:bhserna/miproyecto.git

Agregar/modificar algo en un proyecto.

Para este entonces el proyecto "miproyecto" ya esta en github y en tu máquina, esto es lo que tienes que hacer para agregar una modificación (asumiendo que alguien más del equipo es el que aceptará los cambios).

Nota: Esto es una forma de hacer el github flow. Si quieres saber más puedes visitar la guia de github

  • Ve al branch master (si ya estas en ese branch, git te lo dirá)
$ git checkout master
  • Actualiza tu branch master con el que esta en 'origin' (github)
$ git pull origin -p
  • Crea un nuevo branch con un nombre descriptivo (por ejemplo add-title)
$ git checkout -b add-title
  • Has las modificaciones necesarias en tu editor (Pudes poner el encabezado en README.text)
  • Agreaga los cambios que hiciste a los cambios que serán persistidos.
$ git add README.text
  • Persiste tus cambios con un commit
$ git commit -m "adds title to the README file"
  • Sube tu branch a github
$ git push origin add-title
  • Crea un pull request en github describiendo el cambio que hiciste
  • Un compañero podrá ahora integrar tus cambios a master (o pedirá un cambio)

Agregar más cambios a un pull request

Suponiendo que hiciste algunos cambios y creaste un pull request para que alguien más lo aceptara, pero el te dice que antes de unir a master necesitas hacer unos cambios más. Esto es lo que debes de hacer.

  • Ve al branch del pull request (si ya estas en ese branch git te lo dirá)
$ git checkout add-title
  • Has los cambios que te pidieron (por ejemplo agregar un a descripción al readme)
  • Agrega los cambios a los cambios que serán persistidos
$ git add README.text
  • Persite los cambios con un commit
$ git commit -m "some changes in README
  • Envía los cambios del branch a github
$ git push origin add-title

Aceptar un pull request

Cuando otro compañero hizo un cambio en el proyecto y a ti te toca integrar su pull request al branch master.

  • Ve a la página del pull request en github.
  • Reviza que los cambios sean correctos.

Si crees que todo esta bien

  • Da click en el botón de Merge pull request.

Si los cambios no son suficientes o crees que no pueden ser agregados

  • Comenta a tu compañero las razones, para que el pueda agregar más cambios al pull request y que ahora sí puedas integrar sus cambios.

Si github no te permite hacer el marge directamente ya que no aparece el botón para hacer la integracion. Es probable que seaEsto pasa cuando git encuentra conflictos que no puede resolver entre el branch actual y mastery. Para esto tendrás que decirle a tu compañero que resuelva los conflictos con master para que tu puedas integrarlo.

Nota: tú podrías resolver los conflictos, pero normalmente le sería más fácil a la persona que hizo los cambios a integrar.

Resolver conflictos con master

Algunas veces cuando haces un pull request o durante el tiempo en que desarrollaste los cambios en tu branch, fueron agregados cambios en master que tienen conflictos con los cambios que tu estas haciendo. De esto te darás cuenta cuando al hacer el pull request, github te dice que no pude integrar tus cambios a master.

Cuando pasa esto el indicado para resolver esos conflictos eres tú. Y lo que tienes que hacer es lo siguiente:

  • Muevete al branch master en tu computadora
$ git checkout master
  • Actualízalo para que tenga la ultima versión que está en github
$ git pull origin
  • Ahora ve al branch que estabas desarrollando (digamos que es add-title aún)
$ git checkout add-title
  • Dile a git que pase lo que hay ahora en master a tu branch haciendo un nuevo commit
$ git merge master --no-ff
  • Git te dirá que hay conflicto
CONFLICT (content): Merge conflict in README.text
Automatic merge failed; fix conflicts and then commit the result.
  • Ve a tu editor y haz los cambios que te parezcan adecuados

Verás algo como lo siguiente

<<<<<<< HEAD

Pi es igual a 3.14

=======

Pi es igual a 3.1416

>>>>>>> master

Git pone <<<<<<< HEAD para empezar a mostrar lo que hay en el branch en el que tú estas trabajando y pone ======= para mostrar el final y comenzar a mostrar lo que hay en el branch master y al final pone >>>>>>> master para indicar que ahí termino el conflicto.

Con eso tu puedes tomar la decisión de dejar lo que mas convenga para tu proyecto, por ejemplo:

Pi es igual a 3 =)
  • Agrega las modificaciones que hiciste a los cambios que serán persistidos
$ git add README.text
  • Persiste los cambios
$ git commit
  • Vuelve a subir tus cambios a github
$ git push origin add-title
  • Avisa a tu compañero que ya resolviste los conflictos.

Actualizar el branch en el que estoy trabajando

Algunas veces hay dos o más personas trabajando en un mismo branch o alguien del equipo agrego un pequeño cambio en el branch que estabas trabajando. Para poder llevar esos cambios a tu computadora, has lo siguiente:

  • Ve al branch que quieres actualizar (supongamos que se llama mi-super-branch)
$ git checkout mi-super-branch
  • Baja los ultimos cambios para ese branch
$ git pull origin mi-super-branch

Ver los cambios que he hecho

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment