introducción a git

23
INTRODUCCIÓN A Conceptos básicos

Upload: ivanportilla

Post on 11-Jan-2016

5 views

Category:

Documents


1 download

DESCRIPTION

En esta presentación se pretende dar una introducción básica a lo que es Git, enfocando algunos de sus comandos y sus formas de trabajar con ramificaciones, la presentación puede verse sujeta a cambios y actualizaciones.

TRANSCRIPT

Page 1: Introducción a Git

INTRODUCCIÓN AConceptos básicos

Page 2: Introducción a Git

¿QUÉ ES UN SISTEMA DE CONTROL DEVERSIONES?

Es un sistema mediante el cual se registran los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante.

Page 3: Introducción a Git

¿QUÉ ES GIT?

Sabiendo lo anterior, Git es un sistema de control de versiones distribuido creado por Linus Torvalds en 2005 como respuesta a la necesidad de controlar el proyecto del núcleo Linux.

Entre sus características tenemos:

Instantáneas, no diferencias.

Casi cualquier operación es local.

Git tiene integridad.

Git generalmente solo añade información.

Page 4: Introducción a Git

LOS TRES ESTADOS

Git tiene tres estados principales en los que se pueden encontrar tus archivos:

Modificado (modified)

Preparado (staged)

Confirmado (commited)

Page 5: Introducción a Git

FUNDAMENTOS DE GIT [1/6]

git init: Inicializa un repositorio.

git clone [url] [ruta]: Clona un repositorio.

OBTENIENDO UN REPOSITORIO GIT

Page 6: Introducción a Git

FUNDAMENTOS DE GIT [2/6]

git status: Permite comprobar el estado de los archivos de tu repositorio.

git add: Inicia el seguimiento de un archivo o conjunto de archivos, también cumple la tarea de preparar archivos.

git commit: Confirma los cambios de tus archivos, en este punto se toma una instantánea del área de preparación.

GUARDANDO CAMBIOS EN EL REPOSITORIO

Page 7: Introducción a Git

FUNDAMENTOS DE GIT [3/6]

git log: Permite ver las modificaciones que se han llevado a cabo sobre un proyecto.

Opciones para filtrado de git log:

-(n): Muestra solo las últimas n confirmaciones.

--since: Muestra confirmaciones posteriores a la fecha dada.

--until: Muestra confirmaciones hechas antes de la fecha dada.

--author: Muestra las confirmaciones que coincidan con el autor.

--commiter: Muestra las confirmaciones que coinciden con el confirmador específico.

VIENDO HISTÓRICO DE CONFIRMACIONES

Page 8: Introducción a Git

FUNDAMENTOS DE GIT [4/6]

git commit –-amend: Permite volver a hacer una confirmación reemplazando la confirmación anterior.

git reset HEAD [archivo]: Permite sacar un archivo del área de preparación.

git checkout –-[archivo]: Permite deshacer las modificaciones de un archivo al punto de la última confirmación de este.

DESHACIENDO COSAS

Page 9: Introducción a Git

FUNDAMENTOS DE GIT [5/6]

git remote: Muestra los repositorios remotos que tienes configurados.

git remote add [nombre] [url]: Permite añadir un nuevo repositorio a tu lista con un nombre definido.

git fetch [repositorio]: Recupera todos los datos del repositorio. Después del fetch, tendrás referencias a todas las ramas del repositorio remoto.

git push [repositorio] [rama]: Permite enviar tus cambios al repositorio remoto. (Requiere permiso de escritura)

git remote show [nombre]: Muestra información del repositorio.

git remote rename [anterior] [nuevo]: Renombra el repositorio.

git rm [repositorio]: Elimina la referencia del repositorio.

TRABAJANDO CON REPOSITORIOS REMOTOS

Page 10: Introducción a Git

FUNDAMENTOS DE GIT [6/6]

git tag: Permite lista las etiquetas definidas en Git.

git tag –a [nombre] –m [mensaje]: Crea la etiqueta anotada con nombre y mensaje definido.

git show [nombre]: Muestra la información de la etiqueta solicitada.

git tag [nombre]: Crea la etiqueta ligera con el nombre definido.

git tag –a [nombre] [suma]: Crea la etiqueta para un commit identificado con la suma de comprobación definida.

git push [repositorio] [tagname]: Permite enviar las etiquetas definidas al servidor.

CREANDO ETIQUETAS

Page 11: Introducción a Git

RAMIFICACIONES EN GIT

Crear una rama es básicamente crear un nuevo apuntador, que en este caso apuntaría a la misma confirmación de master. Para crear una rama hacemos:

git branch [nombre] (Si añades –b saltas a la rama)

CREANDO RAMAS.

Page 12: Introducción a Git

RAMIFICACIONES EN GIT

HEAD es un apuntador especial que apunta a la rama local donde estás trabajando. Para cambiar de rama hacemos lo siguiente:

git checkout[rama]

MOVERSE ENTRE RAMAS

Page 13: Introducción a Git

RAMIFICACIONES EN GIT

Cuando hemos terminado el trabajo en las ramas que creamos para añadir o corregir ciertas funcionalidades, necesitamos mezclarlas con la rama de trabajo principal. Aquí se presentarán distintos casos, pero para hacer el merge seguimos el procedimiento:

Nos movemos a la rama principal (master).

Hacemos: git merge [rama a fusionar]

FUSION DE RAMAS (MERGE)

Page 14: Introducción a Git

RAMIFICACIONES EN GIT

FAST FORWARD

Este tipo de fusión se emplea cuando hay un caso especial en el que en una rama adquiere cambios no conflictivos con su antecesor. Al hacer el merge, el apuntador de master ahora apunta al commit de dicha rama.

PROCEDIMIENTOS BÁSICOS PARA FUSIONAR [1/3]

Page 15: Introducción a Git

RAMIFICACIONES EN GIT

FUSION DE TRES BANDAS

Este caso difiere del anterior por el hecho de que la confirmación en la rama actual no es ancestro directo de la rama que pretendes fusionar. Git realizará una fusión a tres bandas, utilizando las dos instantáneas apuntadas por el extremo de cada una de las ramas y por el ancestro común a ambas dos.

PROCEDIMIENTOS BÁSICOS PARA FUSIONAR [2/3]

Page 16: Introducción a Git

RAMIFICACIONES EN GIT

FUSIÓN CON CONFLICTOS

Hay ciertas situaciones donde hay modificaciones dispares en una misma proporción de un archivo en las dos ramas que se pretende fusionar. Para resolver este tipo de conflictos, se ha de elegir manualmente el contenido de un lado o de otro. También existe la alternativa git mergetool, una herramienta de visualización.

PROCEDIMIENTOS BÁSICOS PARA FUSIONAR [3/3]

Page 17: Introducción a Git

RAMIFICACIONES EN GIT

git branch: Lista las ramas del repositorio, la rama marcada con * es la rama actual.

git branch -v: Lista las últimas confirmaciones de cada rama.

git branch -–merged/--no-merged: Filtrará las ramas de acuerdo a si han sido fusionadas o no.

GESTIÓN DE RAMIFICACIONES

Page 18: Introducción a Git

RAMIFICACIONES EN GIT

RAMAS DE LARGO RECORRIDO (Proyectos de larga duración)

Es uno de los flujos de trabajo más comunes, la idea principal de es mantener código totalmente estable en la rama master, mientras que las otras ramas (‘desarrollo’ o ‘siguiente’) se utilizan para trabajar y hacer pruebas. Las ramas estables apuntan hacia posiciones más antiguas en el registro de confirmaciones, mientras que las ramas avanzadas apuntan a posiciones más recientes.

FLUJOS DE TRABAJO RAMIFICADOS

Page 19: Introducción a Git

RAMIFICACIONES EN GIT

RAMAS PUNTUALES (Proyectos de cualquier duración)

Una rama puntual es aquella de corta duración que abres para un tema o una funcionalidad muy concreta. La idea es trabajar funcionalidades por ramas, sin la necesidad de estar fusionando continuamente las ramas.

FLUJOS DE TRABAJO RAMIFICADOS

Page 20: Introducción a Git

RAMIFICACIONES EN GIT

RAMAS PUNTUALES (Proyectos de cualquier duración)

Una rama puntual es aquella de corta duración que abres para un tema o una funcionalidad muy concreta. La idea es trabajar funcionalidades por ramas, sin la necesidad de estar fusionando continuamente las ramas.

FLUJOS DE TRABAJOS RAMIFICADOS

Page 21: Introducción a Git

RAMIFICACIONES EN GITRAMAS REMOTAS

Las ramas remotas son referencias al estado de ramas en tus repositorios remotos. Son ramas locales que no puedes mover; se mueven automáticamente cuando estableces comunicaciones en la red.Suelen referenciarse como [remoto]/[nombre].

Page 22: Introducción a Git

RAMIFICACIONES EN GIT

git push [repositorio] [rama]: Dado que las ramas locales no se sincronizan con los remotos automáticamente debes hacer el push para compartirla en tu repositorio.

git fetch [repositorio]: Recupera todos los elementos de un repositorio, incluido referencias no editables a las ramas remotas.

git checkout -b [local] [repositorio]/[rama]: Crea una rama local en el punto donde se encuentra la rama remota.

git checkout --track [repositorio]/[rama]: Te permite hacer seguimiento a la rama remota. Las ramas de seguimiento son ramas locales con referencia remota.

git push [repositorio] :[rama]: Te permite borrar una rama remota.

PUBLICANDO

Page 23: Introducción a Git

REFERENCIAS

Scott Chacon, Pro Git. 2015-05-04.