Git y Github¶
A menos que tengas un buen motivo, deberías estar utilizando git
y GitHub para el control de versiones.
Recursos sobre Git¶
Si no sabes sobre git
o no lo has usado en equipo, ¡no temas!.
Existe una gran cantidad de sitios maravillosos para que te inicies
con git
. Nosotros recomendamos:
- Help.Github te puede ayudar a arrancar con
git
sin importar qué sistema operativo uses. Si no has usado GitHub antes, este es el curso perfecto. También contiene buena información sobregit
como tal. - Pro Git es probablemente el mejor recurso sobre
git
que existe. Cubre practicamente todo lo que puedes llegar a necesitar, por lo que es ciertamente extenso. Sin embargo, es una excelente lectura para llegar a conocer los aspectos básicos o para usar como referencia. Pro Git es escrito por uno de los desarrolladores de GitHub. - Hay una lista de recursos sobre git en StackOverflow que contiene herramientas, tutoriales, guías de referencia, entre otros.
La próxima vez que comiences un proyecto, ¡usa git
/GitHub!.
Trabajar en algo por tu cuenta es diferente a trabajar con otros, pero
comenzar con los comandos básicos de git
(clone, branch, merge)
hará que las cosas más avanzadas (múltiples orígenes, rebasing, ...)
tengan más sentido.
Prácticas de uso de Git en Mozilla¶
- Lee sobre el modelo de git-flow. En Mozilla se trabaja de manera
similar, exceptuando el uso de
master
como rama de desarrollo,prod
como rama de producción, ybug-$BUG_NUMBER
como ramas de funcionalidades. Una vez conocesgit
, entender como manejar las ramas de manera eficiente permitirá mantener correcciones de errores y características diferentes en sus propuas ramas. Esto es realmente maravilloso, ¡especialmente en casos de regresiones!. - Usamos
git submodule
para nuestras librerías. El artículo sobre git submodules explicados te ayudará a entender cómo funcionan. - Frecuentemente usamos
git rebase
para combinar y corregir commits antes de mezclarlos con los repositorios originales. Esto ayuda a mantener la historia del repositorio limpia y a mejorar las revisiones de código. GitHub tiene un buen artículo sobre rebase.
github.com/mozillahispano¶
Los nuevos proyectos para Mozilla Hispano deberían iniciarse en la cuenta de Mozilla Hispano.
Contacta a Nukeador
si deseas añadir un proyecto. Normalmente lo
puedes encontrar en el canal #mozilla-hispano en IRC.
Trabajando en algún proyecto¶
Para trabajar en un proyecto existente:
- Haz un fork en tu cuenta
- Crea una rama para tu trabajo
- Envía un pull request para revisión
- Mezcla tu commit con
master
, que debería estar configurada para seguirorigin/master
git push
- Coloca un enlace al commit en el Bug o Issue relevante
Mensajes de Commit¶
- Sigue estos lineamientos
- Debería contener un resumen de 50 caracteres, con los detalles necesarios debajo
- Si se trata de un bug o issue, debería contener
bug 1234
en el resumen.
Manteniento master sincronizado¶
Seguramente querrás mantener tu rama master
local sincronizada.
Típicamente harás un rebase
de tus ramas con tu master
para
luego enviar (push
) tus cambios a origin/master
.
Vamos a asumir que has definido tu remota origin
de la manera correcta
en GitHub. Por ejemplo, para Zamboni.
origin git@github.com:jbalogh/zamboni.git
Tu archivo .gitconfig
debería entonces contener lo siguiente:
[branch "master"]
remote = jbalogh
merge = master
rebase = true
Haciendo la vida más fácil¶
Herramientas para Git¶
shell
Hay un repositorio de herramientas para git llamado git-tools que nos pueden facilitar la vida. Este contiene scripts de shell y Python que hacen cualquier tipo de magia.
Como muestra:
git here
te permite saber cuál es la rama actual.git compare
con las opciones apropiadas engit.config
te dará una URL de comparación en GitHub para tu rama, que permite observar las diferencias de los cambios que ya han sido enviados.git url
con las opciones correctas engit.config
te devolverá la URL al último commit en GitHub.
Coloca estas herramientas en tu path
y luego haz un fork y crea tus
propias herramientas para compartir.
vim
fugitive.vim puede ser la mejor herramienta para Git y Vim de todos los tiempos.
Oh My Zsh¶
Oh My Zsh es una colección
excelente de scripts de zshell que pueden hacer que tu ambiente de zsh
sea maravilloso. Comprende una colleción de plugins, incluyendo algunos para
git
y GitHub.
Algunos de esos se solapan con git-tools
. Adicionalmente, al usar Oh My Zsh
puedes ver fácilmente la rama actual y su estado en el prompt
.
Por ejemplo:
dash@awesomepants in ~/Projects/bootcamp/the_code/docs
(bootcamp) ± on master!
Donde:
bootcamp
es el virtualenv activo.±
significa que estoy en un repositoriogit
.master
es la rama actual.!
indica que hay cambios sin enviar en la rama actual.
Viendo código de otras personas¶
En algunas ocasiones vas a tener que probar código de otras personas localmente. Si tienes un pull request o un commit de la otra persona, esto es lo que debes hacer para ver su código:
git remote add otro git@github.com:otro/repo.git
git fetch otro
git co otro/rama
Nota
otro
es la otra persona.- La primera línea define una remota. Una remota no es más que un alias para un repositorio.
- La segunda línea descarga todos los commits de
otro
que aún no tienes localmente. Normalmente esto son solo commits, pero en teoría puede ser cualquier cosa. - En la tercera línea se hace un cambio a la rama de
otro
. Si tienes el hash de un commit, puedes hacergit co $COMMIT_HASH
.