diapositivas curso entendiendo_git
DESCRIPTION
Diapositivas utilizadas durante el curso "Entendiendo git". Cuando un equipo de desarrollo y/o diseño trabaja de verdad en equipo, una herramienta como git se hace imprescindible. Trabajaréis con la tranquilidad y seguridad de saber que siempre podréis volver atrás, sabréis qué ha pasado con el código, controlaréis quién y cuándo lo ha modificado y reduciréis el tiempo dedicado al mantenimiento del mismo. Aunque la flexibilidad de git permite que lo adaptéis a vuestro flujo de trabajo sin grandes dificultades, será git el que acabe por cambiar vuestra forma trabajar, tanto si trabajáis solos como si lo hacéis en equipo. Objetivos: Entender el funcionamiento interno de git, ser capaces de comprender el grafo de evolución de un proyecto, entender qué es una rama y una etiqueta (¿hay alguna diferencia?), entender qué son los repositorios y ramas remotas y aprender a trabajar en equipo a través de un servidor central (github/bitbucket). Dirigido a: Programadores, diseñadores, maquetadores y administradores de sistemas que quieran mejorar el control sobre el código fuente, la gestión de sus ficheros de configuración o versionar, en general, cualquier fichero de texto plano. No se requiere ningún conocimiento previo de git o cualquier otro sistema de control de código. Temario: Tema 1: Introducción ¿Por qué usar un sistema de control de código? Un poco de teoría Cómo instalar Git en Mac, Windows y Linux Herramientas visuales para trabajar con git Tema 2: Trabajando con Git Crear o clonar un repositiorio Controlando los cambios que hacemos en el código Revisando el histórico de nuestro repositorio Me he equivocado ¿qué hago? Etiquetas Tema 3: Ramas ¿Para qué necesito las ramas? Branching y Merging Resolución de conflictos Ejemplo de flujos de trabajo Ramas remotas Volver a un estado anterior Tema 4: Repositorios remotos ¿Para qué necesitamos un servidor? Trabajando con repositorios remotos Pull y push a fondo Trabajando con ramas remotas Pull requests Tema 5: Trabajo en equipo Trabajando con múltiples repositorios remotos Compartir nuestro repositorio con otras personas Trabajando en equipo Resolución de conflictos Flujos de trabajoTRANSCRIPT
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Entendiendo git
[email protected]@cursodegit
Nuestro blog :www.aprendegit.com
@aprendegit
Alfonso Alba García@aalbagarcia
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
¿porqué estáis aquí?
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
¿Qué nos permite git?
Auditoría del código:
Saber qué ha pasado y cuando
Saber quién lo ha hecho
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
¿Qué nos permite git?
Desarrollo ágil:
Es sencillo crear espacios para probar cosas sin que interrumpa nuestro flujo de trabajo normal
Es sencillo cambiar de un tema a otro
Refactoring es más sencillo
Se integra a la perfección con la metodología TDD
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
¿Qué nos permite git?
Gestión de errores:
Dar marcha atrás cuando nos equivocamos
Volver a un punto anterior del desarrollo
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
¿Qué nos permite git?
Control de código:
Saber qué se ha entregado al cliente
Saber qué se ha desplegado en producción
Saber en qué estado está el desarrollo de una determinada característica
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
¿Qué nos permite git?
Trabajo en equipo:
Optimiza y permite el trabajo distribuido de equipos de muchas personas
Extremadamente flexible: se implementa casi cualquier flujo de trabajo, aunque lo normal es que git te los optimice y los tengas que cambiar...
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Conceptos básicos
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Conceptos básicos
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Conceptos básicos
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
.gitignore
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
.gitignore
Tres formas de ignorar ficheros (por orden de prioridad)
.git/info/exclude -> sólo este repositorio
.gitignore -> todos los que clonan el repositorio
.gitignore_local -> todos mis repositorios locales
git config --get core.excludesfile
Se aplica el último patrón que se lee
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
.gitignore: Patrones
Líneas en blanco: se ignoran
# Comentarios
! negación
Patrones terminados en / se interpretan como carpetas
Si el patrón empieza por /, se interpreta como ruta relativa
El resto de patrones se interpretan como Shell globs
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
.gitignore: Patrones
* -> Comodín (no incluye el separador de directorios)
el patrón web/*.html ignora el fichero web/index.html pero no ignora web/blog/index.html
[ ] -> Selección.
? -> cualquier caracter (sólo uno)
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
.gitignore: ejemplos
Ejemplos de patrones:
.idea/*.htmlweb/*.html/*.php*.[xn]ib
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
.gitignore
Más información:
Página de manual de .gitignore
Serie de artículos sobre .gitignore en aprendegit.com
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
El fichero .gitignore para proyectos XCode
http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
https://gist.github.com/adamgit/3786883
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Creación de un proyecto con git
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Creación de un repositorio
Crea una carpeta, entra dentro y ejecuta el comando
git init
el repositorio se inicializa y aparece la carpeta .git
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Estado del repositorio
¿Cómo están los ficheros en los que estamos trabajando?
git status
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Estado del repositorio$ git status# On branch lugares# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)##! modified: app/controllers/backend/application_controller.rb#! modified: config/routes.rb## Untracked files:# (use "git add <file>..." to include in what will be committed)##! app/assets/javascripts/backend/cities.js.coffee#! app/assets/javascripts/backend/resource.js.coffee#! app/assets/stylesheets/backend/cities.css.scss#! app/assets/stylesheets/backend/resource.css.scss#! app/controllers/backend/cities_controller.rb#! app/controllers/backend/resource_controller.rb#! app/helpers/backend/cities_helper.rb#! app/helpers/backend/resource_helper.rb#! app/views/backend/#! app/views/layouts/backend.html.erb#! test/controllers/backend/cities_controller_test.rb#! test/controllers/backend/resource_controller_test.rb#! test/helpers/backend/cities_helper_test.rb#! test/helpers/backend/resource_helper_test.rbno changes added to commit (use "git add" and/or "git commit -a")
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosAñadimos ficheros al Staging Area
git add *
git add <fichero> <fichero>
Workingdirectory Staging Area Working
directory
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosAñadimos ficheros al Staging Area
git add *
git add <fichero> <fichero>
Workingdirectory Staging Area Working
directory
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosSe puede iniciar un proceso interactivo para
seleccionar qué partes de un fichero queremos subir al staging area. Ejecutamos
git add -i
$ git add -i staged unstaged path 1: unchanged +2/-2 index.html
*** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elpWhat now>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosSeleccionar la opción “p” y posteriormente el fichero seleccionando el número que nos muestra la interfaz
$ git add -i staged unstaged path 1: unchanged +6/-2 index.html
*** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elpWhat now> p staged unstaged path 1: unchanged +6/-2 [i]ndex.htmlPatch update>> 1 staged unstaged path* 1: unchanged +6/-2 [i]ndex.htmlPatch update>>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosEn este punto, presionamos de nuevo “Intro” y
entramos en el modo interactivo
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
$ git add -i staged unstaged path 1: unchanged +6/-2 index.html
*** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elpWhat now> p staged unstaged path 1: unchanged +6/-2 [i]ndex.htmlPatch update>> 1 staged unstaged path* 1: unchanged +6/-2 [i]ndex.htmlPatch update>> diff --git a/index.html b/index.htmlindex b08ce9a..3c50d0c 100644--- a/index.html+++ b/index.html@@ -21,8 +21,8 @@ <li><a href="#">Github</a></li> <li><a href="#">XCode</a></li> <li><a href="#">¿Quiénes somos?</a></li>- <li><a href="#">Cursos</a></li>- <li><a href="#">Contacto</a></li>+ <li><a href="#">Cursos de git</a></li>+ <li><a href="#">Contacta con nosotros</a></li> </ul> </div> </div>Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]?
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosPuedes seleccionar qué hacer con los pedazos
(hunks) de código que has modificado en el fichero$ git add -i...Patch update>> diff --git a/index.html b/index.htmlindex b08ce9a..3c50d0c 100644--- a/index.html+++ b/index.html@@ -21,8 +21,8 @@ <li><a href="#">Github</a></li> <li><a href="#">XCode</a></li> <li><a href="#">¿Quiénes somos?</a></li>- <li><a href="#">Cursos</a></li>- <li><a href="#">Contacto</a></li>+ <li><a href="#">Cursos de git</a></li>+ <li><a href="#">Contacta con nosotros</a></li> </ul> </div> </div>Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]?
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosPara saber qué es cada una de las opciones, pulsa ?
y luego “Intro”$ git add -i...Patch update>> diff --git a/index.html b/index.htmlindex b08ce9a..3c50d0c 100644--- a/index.html+++ b/index.html@@ -21,8 +21,8 @@ <li><a href="#">Github</a></li> <li><a href="#">XCode</a></li> <li><a href="#">¿Quiénes somos?</a></li>- <li><a href="#">Cursos</a></li>- <li><a href="#">Contacto</a></li>+ <li><a href="#">Cursos de git</a></li>+ <li><a href="#">Contacta con nosotros</a></li> </ul> </div> </div>Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? ?
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? ?y - stage this hunkn - do not stage this hunkq - quit; do not stage this hunk nor any of the remaining onesa - stage this hunk and all later hunks in the filed - do not stage this hunk nor any of the later hunks in the fileg - select a hunk to go to/ - search for a hunk matching the given regexj - leave this hunk undecided, see next undecided hunkJ - leave this hunk undecided, see next hunkk - leave this hunk undecided, see previous undecided hunkK - leave this hunk undecided, see previous hunks - split the current hunk into smaller hunkse - manually edit the current hunk? - print help
Añadiendo ficheros
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? ?y - Pasar este trozo al área de ensayon - No pasar este trozoq - terminar. No pasa este trozo ni ninguno de los que quedan al staging areaa - Pasa este pedazo y todos los que quedan al staging aread - No pases este trozo ni ninguno de los que quedan en el fichero al staging areag - Selecciona un trozo para situarnos en el/ - Busca un trozo que encaje con una expresión regularj - Mantener este trozo como “indeciso” y ve al siguiente hunk marcado como “indeciso”J - Mantener este trozo como “indeciso” y ve al siguientek - Mantener este trozo como “indeciso” y ve al siguiente hunk marcado como “indeciso”K - siguiente hunk marcado como “indeciso” y ve al anteriors - rompe este trozo en trozos más pequeñose - editar este trozo manualmente? - ayuda
Añadiendo ficheros
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosAl terminar, podemos usar la opción “s” para ver el
estado y posteriormente “q” para terminar
What now> s staged unstaged path 1: +2/-2 +4/-0 index.html
*** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elpWhat now> q
Cambios subidos al staging area
Cambios fuera del staging area ¡no estarán en el siguiente commit!
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadir ficherosMás información:
Sección 6.2 - Pro git
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosPasamos los ficheros al repositorio
git commit -m’Mensaje del commit’
Workingdirectory Staging Area Working
directory
Utilizad siempre un mensaje corto y descriptivoEvitad mensajes como “trabajando” “...” que no
aportan nada al que lo lee
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficherosSi nos hemos olvidado algún fichero al hacer el último commit,
podemos añadirlo al staging area con
git add <fichero>
y modificar el commit ejecutando
git commit --amend
La opción --amend también permite modificar el comentario del commit
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Añadiendo ficheros
Recuerda que
git commit --amend
va a sobreescribir la historia del proyecto
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Borrando y moviendo ficheros
Borrar un fichero del índice
git rm <fichero>
Mover un fichero
git mv <ruta actual> <ruta nueva>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Etiquetando los commitsEtiquetamos los commits para poder recuperar el
código fuente en un estado determinado en el futuro
git tag <nombre> -m’Mensaje’
Etiqutar el último commit de la rama activa
Etiquetar un commit determinado
git tag <nombre> -m’Mensaje’ <commit>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Etiquetando los commits
git tag -d <nombre>
Borrar una etiqueta
git tag -l
Ver todas las etiquetas
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Sacando ficheros del Staging Area
git checkout -- <fichero>
Deshacer los cambios de un fichero que todavía no está en Staging Area
Workingdirectory Staging Area Working
directory
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Sacando ficheros del Staging Area
git reset HEAD <fichero>
Sacar un fichero que está en el Staging Area
Workingdirectory Staging Area Working
directory
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Sacando ficheros del Staging Area
git reset HEAD <fichero>
Sacar un fichero que está en el Staging Area
Workingdirectory Staging Area Working
directory
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Sacando ficheros del Staging Area
git reset HEAD
Sacar todos los ficheros que están en el Staging Area
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stashing
Stash: área en el que podemos guardar cambios en ficheros para aplicarlos luego
Útil para:Poder interrumpir una tarea y trabajar en otra
Mover cambios de un sitio a otro
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stashing
Almacenar en el stash los cambios del working copy en ese momento
git stash save “mensaje”
Workingdirectory Staging Area Working
directory
Stash
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stashing
Almacenar en el stash los cambios del working copy en ese momento
git stash save “mensaje”
Workingdirectory Staging Area Working
directory
Stash
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stashing
Muestra el listado de entradas del stash
git stash list
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stashing
Recuperar algo almacenado en el Stash
git stash pop <nombre>
Workingdirectory Staging Area Working
directory
Stash
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Stashing
Recuperar algo almacenado en el Stash
git stash pop <nombre>
Workingdirectory Staging Area Working
directory
Stash
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
StashingRecuperar una entrada del stash y guarda una copia
git stash apply <nombre>
Borrar una entrada del stash sin aplicarla
git stash drop <nombre>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Ramas
Creación de una rama en el último commit de la rama activa
git branch <nombre>
Una rama en git es una etiqueta
Crear una rama en un commit
git branch <nombre> <commit>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Ramas
Crear una rama y activarla
git checkout -b <nombre>
Cambiar de rama
git checkout <nombre>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
RamasPara incorporar los cambios de feature_x en
master cambiamos a la rama master
git checkout master
e incorporamos los cambios de la rama feature_x
git merge feature_x
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Ramas: rebasePara incorporar los cambios de feature_x en
master cambiamos a la rama master
git checkout master
e incorporamos los cambios de la rama feature_x
git rebase feature_x
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
merge vs rebase
feature_x *
master
git merge master
a45f32d
432f0bc
12ab56d
abbcd56
f43c00a
12ab56d
abbcd56
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
merge vs rebase
git merge master
feature_x *
master
merge commita45f32d
432f0bc
12ab56d
abbcd56
f43c00a
897bc34
12ab56d
abbcd56
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
merge vs rebase
feature_x *
master
git rebase master
a45f32d
432f0bc
871634
726374
f43c00a
12ab56d
abbcd56
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
merge vs rebase
git rebase master
feature_x *
master
????
????
????
????
f43c00a
12ab56d
abbcd56
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
merge vs rebase
git rebase master
feature_x *
master
????
????
????
????
12ab56d
abbcd56
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
merge vs rebase
git rebase master
feature_x *
master
75f8c57
a8ae0e0
9c26e18
ab516sd
12ab56d
abbcd56
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Repositorios remotos
Para subir nuestro repositorio a un repositorio remoto necesitamos conocer la URL del repositorio
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Repositorios remotos
Para añadir un repositorio remoto ejecutamos
git remote add <nombre> <url>
Se puede ver la lista de remotos con
git remote -v
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Repositorios remotos
Borrar un repositorio remtos
git remote remove <nombre>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
PushPara subir todos nuestros commits de la rama activa
al repositorio remoto ejecutamos
git push <remoto> <rama remota>
usando el repositorio que hemos creado durante la clase
git push origin master
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Tracking branchesUna “Tracking branch” es una rama local que está
relacionada con una remota.
Si estás en una rama local que es “tracking branch” de una rama remota y ejecutas el comando
git push
git automáticamente lo convierte en
git push <tracking branch> <origin/rama remota>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Tracking branchesPodemos crear una “tracking branch” de una rama
remota ejecutando
git branch --track <rama local> <remoto>/<rama remota>
que siguiendo con el ejemplo que hacemos en clase sería
git branch --track mirama origin/master
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Tracking branchesEn cualquier momento podemos hacer que una
tracking branch deje de serlo ejecutando
git branch --unset-upstream <rama>
En cualquier momento podemos hacer que una rama local sea una tracking branch ejecutando
git branch --unset-upstream-to=<remoto>/<rama remota> <rama local>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Pull / FetchPara descargarnos los commits del repositorio remoto
git fetch <remoto>
Este comando actualiza los commits únicamente. Si queremos ahora incorporar los cambios de una rama
remota en una rama local ejecutamos
git checkout <rama local>git merge <remoto>/<rama remota>
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Pull / FetchSupongamos que tenemos una rama local
“feature_x” que es tracking branch de una rama remota “origin/feature_x”
La rama remota ha sido actualizada por otro miembro del equipo y queremos actualizarnos
git checkout feature_xgit fetch origin
git merge origin/feature_x
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Pull / FetchEsta operación es tan común que git nos da un atajo
git checkout feature_xgit fetch origin
git merge origin/feature_x
git checkout feature_xgit pull
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Pull / Fetch
git-pull por defecto hace un merge, ¿quieres que en lugar de merge haga un rebase?
git checkout feature_xgit pull --rebase
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
Buenas prácticasUsa ramas locales
No dejar los mensajes de los commits vacíos
Usar mensajes descriptivos que indiquen qué contiene el commit. ¿Qué quiere decir “trabajando”? ¿Y “...”?
Si utilizas un sistema de tareas o bug tracking que se enlaza con git (como Jira o redmine) enlaza tus commits con tus tickets, bugs o tareas
Haz commits pequeños. Haz commit a menudo.
Usa ramas locales
Atomiza los commits todo lo que puedas. Intenta no mezclar en un mismo commit código de cosas que no tengan nada que ver entre sí.
Por ejemplo: si has hecho tres vistas (tabla de registros, detalle de registro y formulario de alta de registro) haz tres commits, no hagas sólo uno.
El flujo TDD es escribir test - rojo - escribir código - verde - commit.
Si luego te quedan muchos commits, siempre puedes hacer squashing.
Usa ramas locales y utiliza rebase para incorporar los cambios de las otras ramas.
Haz squashing de tus commits para eliminar aquellos que sean irrelevantes para el resto del equipo
Evita sobreescribir la historia del repositorio (a no ser que sepas lo que estás haciendo)
Por cierto, usa ramas locales
jueves, 4 de abril de 13
cursodegit.com aprendegit.comDiapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.
¡Gracias!
jueves, 4 de abril de 13