Git Pro Taller

Embed Size (px)

DESCRIPTION

Excelente libro para desarrolladores

Citation preview

  • Git like a boss.Sistemas de versionamiento de cdigoSistemas de versionamiento de cdigo

  • Guardando cambios en el repositorio

  • Ingnorando archivos.l - A menudo se tienen arhivos no deseados.l - Como por ejemplo archivos temporales, binarios de

    compilacin.l Archivos temporales.

  • Seamos ms precisos Diferencias entre:ver diferencias para archivos no confirmados:git diffver diferencias para archivos confirmados:git diff --cached

  • Eliminando archivos.l Dejar de seguir archivos:l git rm --cachedl Expresiones regularesl *.[exp1, exp2, .. ]

  • Moviendo archivosl git mv

    l A diferencia de muchos otros VCSs, Git no hace un seguimiento explicito del movimiento de archivos. Si renombras un archivo, en Git no se almacena ning n metadato que indique que lo has renombrado. Sin embargo, Git es suficientemente inteligente como para darse cuenta trataremos el tema de la detecci n de movimiento de archivos un poco ms adelante.

  • Histrico de confirmacionesl git log

    l Sirve para ver el histrico de commits.

    l El comando git log proporciona gran cantidad de opciones para mostrarte exactamente lo que buscas. Aqu veremos algunas de las ms usadas.

    l git log -p -2

    l git log -p -2

    l git log -p -2 --word-diff

    l git log -p -2 --word-diff --stat

    l git log --no-merges

    l git log --pretty=oneline

    l git log --since=2.weeks

    l git log --committer='Jony Rodriguez'

  • Deshaciendo cosasl En cualquier momento puedes querer deshacer algo.

    Veremos algunas herramientas b sicas para deshacer cambios. Ten cuidado, porque no siempre puedes volver atrs despus de algunas de estas operaciones. sta es una de las pocas reas de Git que pueden provocar que pierdas datos si haces las cosas incorrectamente.

  • Modificando el ltimo commit.

    l git commit --amend

    l Olvid confirmar un archivo!l git add l git commit --amend

  • Deshaciendo la preparacin de un archivol Por error agreg un archivo a la fase de preparadosl git reset HEAD

  • Deshaciendo la modificacin de un archivol Qu pasa si te das cuenta de que no quieres mantener las

    modificaciones que has hecho sobre el archivo? C mo puedes deshacerlas fcilmente revertir el archivo al mismo estado en el que estaba cuando hiciste tu ltima confirmacin (o cuando clonaste el repositorio, o como quiera que metieses el archivo en tu directorio de trabajo)?

    l git checkout --

    l #Por favor, ten cuidado.

  • Ramificaciones

  • Branches, conceptos.

  • Branches, conceptos.

    git branch testing

  • Y, cmo sabe Git en qu rama ests en este momento?

    Apuntador especial HEAD

  • Salto entre ramas.l git checkout testing

  • Vista actual

  • En otros SCVl En los que crear una nueva rama supone el copiar todos los

    archivos del proyecto a una nueva carpeta adicional. Lo que puede llevar segundos o incluso minutos, dependiendo del tama o del proyecto. Mientras que en Git el proceso es siempre instantneo. Y, adems, debido a que se almacenan tambi n los nodos padre para cada confirmaci n, el encontrar las bases adecuadas para realizar una fusin entre ramas es un proceso automtico y generalmente sencillo de realizar

    l Alienta a los desarrolladores a usar ramas por las facilidades que ofrecen.

  • Manejor de errores con ramas.git checkout -b Atajo a:git branch git checkout

  • Rama hotfix basada en la rama master original.

  • Integrando ramas.

    git checkout mastergit merge hotfix

  • Borrando ramasgit branch -d hotfix

  • Git en un servidor.l Por qu tener un servidor git?l Tener un repositorio fiable.l Funcionando 24/7l No ser necesario utilizar todo un servidor entero para l.l Un repositorio remoto es normalmente un repositorio bsico

    mnimo, un repositorio Git sin carpeta de trabajo.

  • Eleccin del protocolo.Protocolo LocalEl ms bsico es el Protocolo Local, donde el repositorio remoto

    es simplemente otra carpeta en el disco. Se utiliza habitualmente cuando todos los miembros del equipo tienen acceso a un mismo sistema de archivos, como por ejemplo un punto de montaje NFS

  • El Procotolo SSHl Probablemente, SSH sea el protocolo ms habitual para Git.

    Debido a disponibilidad en la mayor parte de los servidores; (pero, si no lo estuviera disponible, adem s es sencillo habilitarlo). Por otro lado, SSH es el nico protocolo de red con el que puedes facilmente tanto leer como escribir. Los otros dos protocolos de red (HTTP y Git) suelen ser normalmente protocolos de solo-lectura

  • El Protocolo Gitl El protocolo Git es un demonio (daemon) especial, que viene

    incorporado con Git. Escucha por un puerto dedicado (9418), y nos da un servicio similar al del protocolo SSH; pero sin ningn tipo de autentificacin.

    l Ventajas.- El protocolo Git es el m s r pido de todos los disponibles. Si has de servir mucho tr fico de un proyecto pblico o servir un proyecto muy grande

    l Desventajasl La pega del protocolo Git, es su falta de autentificacin.

  • El protocolo HTTP/S Por ltimo, tenemos el protocolo HTTP. Cuya belleza radica en la simplicidad

    para habilitarlo. Basta con situar el repositorio Git bajo la raiz de los documentos HTTP y preparar el enganche (hook) 'post-update' adecuado.

    Ventajas

    La mejor parte del protocolo HTTP es su sencillez de preparaci n. Simplemente lanzando unos cuantos comandos, dispones de un m todo sencillo de dar al mundo entero acceso a tu repositorio Git. En tan solo unos minutos. Adem s, el procolo HTTP no requiere de grandes recursos en tu servidor. Por utilizar normalmente un servidor HTTP esttico, un servidor Apache estandar puede con un tr fico de miles de archivos por segundo; siendo dificil de sobrecargar incluso con el ms pequeo de los servidores.

  • En un servidor *nixl 1- Instalar git-core [en ubuntu: sudo apt-get install git]l 2- Crear un usuario git [sudo adduser git]l 3- Cambiar a usuario git [su git]l 4- Crear el repositorio del proyecto e inizializarlo: l mkdir proyectol cd proyectol git init

    l 5- Ir al directorio donde se sirve contenido en apache2 es:l cd /var/www/html

    l 6- Clonar un bare del repositorio de proyecto que hicimos en el paso 4l git clone --bare ///proyecto proyecto.gitl cd proyecto.git

    l 7- configurarlo y darle permisos:l mv hooks/post-update.sample hooks/post-updatel chmod a+x hooks/post-update

    l 8- a partir de ahora tu proyecto est disponible para el mundo desde tu servidor y se lo puede clonar:l git clone git@:/var/www/html/proyecto.git

  • Autenticacin SSH en un repo de GitHub.

  • Buenas prcticas...l Estilos de commit.l Escribir un buen README.MD