• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introducción a GIT
 

Introducción a GIT

on

  • 616 views

Introducción a GIT. Seminario para la asignatura Arquitectura del Software. Escuela Ingeniería Informática. Universidad de Oviedo

Introducción a GIT. Seminario para la asignatura Arquitectura del Software. Escuela Ingeniería Informática. Universidad de Oviedo

Statistics

Views

Total Views
616
Views on SlideShare
608
Embed Views
8

Actions

Likes
4
Downloads
13
Comments
0

2 Embeds 8

http://www.linkedin.com 5
https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

Introducción a GIT Introducción a GIT Presentation Transcript

  • Universidad de Oviedo Arquitectura del Software Universidad de Oviedo Arquitectura del Software Escuela de Ingeniería Informática Seminario: GIT 2014 Jose Emilio Labra Gayo
  • Universidad de Oviedo Arquitectura del Software Sistemas de control de versiones Centralizados Un repositorio centralizado de todo el código Ejemplos: CVS, Subversion,... Escuela de Ingeniería Informática Distribuidos Cada usuario tiene su propio repositorio Ejemplos: mercurial, git, ...
  • Universidad de Oviedo Arquitectura del Software Git Diseñado por Linus Torvalds (Linux), 2005 Objetivos: Aplicaciones con gran nº de archivos de código Eficiencia Escuela de Ingeniería Informática Trabajo distribuido Cada desarrollador tiene su propio repositorio Copia local de todo el historial de cambios Es posible realizar commit's incluso sin conexión Desarrollo no lineal (ramificaciones)
  • Universidad de Oviedo Arquitectura del Software Componentes locales 3 componentes locales: Directorio de trabajo local Índice: área de ensayo (stage). A veces también caché. Historial: Almacena versiones ó commits Escuela de Ingeniería Informática HEAD (versión más reciente) add commit rm Directorio trabajo local Índice stage area HEAD Historial Commits
  • Universidad de Oviedo Arquitectura del Software Ramas Ramas feature-2 feature-1 Git facilita gestión de ramas develop hotfix-1 master tags 0.1 master = rama inicial Escuela de Ingeniería Informática Operaciones: Crear ramas (branch) Cambiar a ramas (checkout) Combinar (merge) Etiquetar (tag) Múltiples estilos de ramificación 0.2 1.0
  • Universidad de Oviedo Arquitectura del Software Repositorios remotos Se pueden conectar con repositorios remotos origin = inicial push add commit Escuela de Ingeniería Informática rm Directorio trabajo local Índice stage area Máquina Local HEAD Historial Commits clone fetch pull Repositorio remoto origin
  • Escuela de Ingeniería Informática Universidad de Oviedo Arquitectura del Software init clone config add commit status log diff
  • Universidad de Oviedo Arquitectura del Software init - Crear repositorios git init Transforma el directorio actual en repositorio Git Se crea directorio .git Variantes: Escuela de Ingeniería Informática git init <directorio> Crea un repositorio vacío en el directorio especificado git init --bare <directorio> Inicializa repositorio Git pero omite directorio de trabajo NOTA: Normalmente, esta instrucción sólo se realiza una vez
  • Universidad de Oviedo Arquitectura del Software clone - Clonar repositorios git clone <repo> Clonar el repositorio <repo> en la máquina local <repo> puede estar en una máquina remota Ejemplo: Escuela de Ingeniería Informática git clone https://github.com/Arquisoft/ObservaTerra0.git NOTA: Al igual que init, esta instrucción sólo se realiza una vez
  • Universidad de Oviedo Arquitectura del Software config - Configurar git git config --global user.name <name> Declara el nombre de usuario Otras opciones de configuración: user.email, merge.tool, core.editor, ... Escuela de Ingeniería Informática Ficheros de configuración: <repo>/.git/config ~/.git/config -- Específicos de repositorio -- Globales
  • Universidad de Oviedo Arquitectura del Software add - Añadir al índice git add <fichero> git add <dir> Añade fichero o directorio al índice Escuela de Ingeniería Informática Variantes git add --all = Añade/borra ficheros El índice ó área de ensayo almacena copias de los ficheros antes de ser incluidos en el historial
  • Universidad de Oviedo Arquitectura del Software commit - Añadir al historial git commit git commit -m "mensaje" Añade los ficheros del índice al historial Escuela de Ingeniería Informática Crea una nueva instantánea "snapshot" del proyecto Cada instantánea tiene un identificador SHA1 Puede recuperarse posteriormente Pueden asignarse etiquetas para facilitar su gestión NOTA: Conviene excluir de control de versiones algunos ficheros Ejemplos: binarios (*.class), temporales, configuración (.settings), privados (claves de Bases de datos...), etc. Se incluyen en fichero: .gitignore
  • Universidad de Oviedo Arquitectura del Software status - Observar índice git status Muestra ficheros staged, unstaged y untracked Escuela de Ingeniería Informática staged = en índice pero no en historial unstaged = modificados pero no añadidos a índice untracked = en directorio de trabajo
  • Universidad de Oviedo Arquitectura del Software log - Observar historial git log Muestra historial de cambios Escuela de Ingeniería Informática Variantes git git git git git log log log log log --oneline --stat -p --autor="expr" --grep="expr" Resumen en 1 línea Estadísticas Camino completo con diff Commits de un autor Busca commits git log --graph --decorate --online Muestra grafo de cambios
  • Universidad de Oviedo Arquitectura del Software diff - Mostrar diferencias git diff Dir. trabajo vs índice git diff --cached git diff git diff --cached Índice vs commit Escuela de Ingeniería Informática git diff HEAD Dir. trabajo vs commit Algunas pciones: --color-words --stat Directorio trabajo Índice HEAD git diff HEAD
  • Universidad de Oviedo Arquitectura del Software Escuela de Ingeniería Informática Comandos para deshacer cambios checkout revert reset clean
  • Universidad de Oviedo Arquitectura del Software checkout - Cambiar Cambia directorio de trabajo git checkout <c> Cambiar a commit <c> Escuela de Ingeniería Informática Se pasa a estado "detached HEAD" git checkout <c> <f> Recupera fichero <f> de commit <c> NOTA: checkout también se utiliza para cambiar a diferentes ramas
  • Universidad de Oviedo Arquitectura del Software revert - Recuperar git revert <c> Recupera commit <c> Añade la versión recuperada al historial Operación "segura" Escuela de Ingeniería Informática permite rastrear cambios en historial
  • Universidad de Oviedo Arquitectura del Software reset - Deshacer Deshacer cambios Operación no segura Escuela de Ingeniería Informática git reset git reset --hard git reset <c> Deshace cambios en índice Deshace cambios en índice y directorio trabajo Deshacer cambios y recuperar commit <c> NOTA: Es peligroso hacer reset en repositorios ya publicados Es mejor utilizar revert
  • Universidad de Oviedo Arquitectura del Software clean - Limpiar Borrar ficheros locales git clean -f Borra ficheros untracked Escuela de Ingeniería Informática NOTA: Peligroso (se pueden perder cambios locales) git clean -n Muestra qué ficheros se borrarían
  • Escuela de Ingeniería Informática Universidad de Oviedo Arquitectura del Software branch checkout merge
  • Universidad de Oviedo Arquitectura del Software branch - Ramas Gestión de ramas git branch git branch <r> Muestra las ramas existentes Crear la rama <r> Escuela de Ingeniería Informática git branch -d <r> Borrar rama <r> Segura (no borra si no hay mezclas pendientes) git branch -D <r> Borrar rama <r> Insegura (borra una rama y sus commits) git branch -m <r> Renombrar rama actual a <r>
  • Universidad de Oviedo Arquitectura del Software checkout - Cambiar Cambiar a una rama Escuela de Ingeniería Informática git checkout <r> Cambia a la rama existente <r> git checkout master Cambia a rama master git checkout -b <r> Crear rama <r> y cambia a ella Equivalente a git branch <r> git checkout <r>
  • Universidad de Oviedo Arquitectura del Software merge - Combinar Combinar dos ramas Escuela de Ingeniería Informática git merge <r> Mezclar rama actual con <r> git merge --no-ff <r> Mezclar generando commit de mezcla (más seguro) 2 tipos de combinación Merge fast-forward 3-way merge
  • Universidad de Oviedo Arquitectura del Software merge fast-forward Cuando hay camino lineal entre rama actual y rama a mezclar Antes Rama r desarrollada En rama master r Escuela de Ingeniería Informática master Después de git merge master r master
  • Universidad de Oviedo Arquitectura del Software 3 way merge Cuando las ramas divergen y no se puede hacer fast-forward Antes Rama r desarrollada En rama master master Escuela de Ingeniería Informática Si aparecen conflictos: Mostrar: git status Editar/corregir git add . git commit r Después de git merge r r master
  • Escuela de Ingeniería Informática Universidad de Oviedo Arquitectura del Software commit --amend rebase reflog
  • Universidad de Oviedo Arquitectura del Software Commit -amend Modificar un commit git commit --amend Escuela de Ingeniería Informática Permite añadir nuevos ficheros del índice al commit actual NOTA: Se recomienda no hacerlo en commit's públicos
  • Universidad de Oviedo Arquitectura del Software rama rama rebase - Mover rama master git rebase <c> Mover rama actual a commit <c> Permite que los cambios de una rama se basen en los cambios de otras ramas Escuela de Ingeniería Informática rama rama git checkout rama git rebase master git checkout master git merge rama master master NOTA: Se recomienda no hacer rebases sobre commits ya publicados
  • Universidad de Oviedo Arquitectura del Software rebase interactivo git rebase -i Controla qué commits se mantienen en el historial Escuela de Ingeniería Informática Puede utilizarse para limpiar el historial Aparece un editor con varas instrucciones: pick - utilizar commit tal cual reword - modificar mensaje de commit squash - utilizar commit pero hacer que no se vea ...
  • Universidad de Oviedo Arquitectura del Software reflog - movimientos en historial git reflog Muestra movimientos del historial Escuela de Ingeniería Informática git almacena información de todos los movimientos que se producen en las diferentes ramas git reflog muestra los cambios aunque ya no estén en ninguna rama
  • Escuela de Ingeniería Informática Universidad de Oviedo Arquitectura del Software remote fetch pull push
  • Universidad de Oviedo Arquitectura del Software remote - Conectar repositorios git remote Ver repositorios externos git remote add <nombre> <uri> Crear conexión de nombre <nombre> a <uri> Escuela de Ingeniería Informática git remote rm <nombre> Borrar conexión <nombre> git rename <anterior> <nuevo> Renombrar conexión <anterior> a <nuevo> NOTAS: git clone crea automáticamente una conexión llamada origin Es posible tener conexiones a más de un repositorio externo
  • Universidad de Oviedo Arquitectura del Software fetch - traer Traer elementos de repositorio remoto Permite descargar ramas externas Operación segura: no mezcla con ficheros locales git fetch <remote> Escuela de Ingeniería Informática Descargar todas las ramas del repositorio <remote> git fetch <remote> <rama> Descargar la rama <rama> de repositorio <remote> NOTA: Asigna FETCH_HEAD a cabeza de rama traída Convenio para nombrar ramas: <remoto>/<rama> Ejemplo: origin/master
  • Universidad de Oviedo Arquitectura del Software pull - traer y mezclar git pull <remoto> Trae un repositorio remoto y lo mezcla Equivale a: Escuela de Ingeniería Informática git fetch git merge FETCH_HEAD
  • Universidad de Oviedo Arquitectura del Software push - enviar git push <remoto> <rama> Enviar commits de repositorio local a remoto Variantes git push <remoto> --all Escuela de Ingeniería Informática Enviar todas las ramas Si hay cambios en repositorio remoto, muestra un error (non-fast-forward). Solución: 1. Traer (pull) cambios y mezclar con repositorio local 2. Volver a enviar (push) NOTA: También puede usarse opción: --force (no recomendado)
  • Universidad de Oviedo Arquitectura del Software Herramientas Git Escuela de Ingeniería Informática git - Línea de comandos gitk interfaz gráfico
  • Escuela de Ingeniería Informática Universidad de Oviedo Arquitectura del Software EGit - Entorno para Eclipse
  • Escuela de Ingeniería Informática Universidad de Oviedo Arquitectura del Software SourceTree
  • Universidad de Oviedo Arquitectura del Software Tortoise Git Escuela de Ingeniería Informática Se integra con explorador de Windows
  • Universidad de Oviedo Arquitectura del Software Otras herramientas http://git-scm.com/downloads/guis Gestión de diferencias y mezclas Escuela de Ingeniería Informática p4merge kdiff
  • Universidad de Oviedo Arquitectura del Software Github Herramienta de codificación social Compañía Github Inc. creada en 2008 2013: >3 millones de usuarios, >5millones proyectos Escuela de Ingeniería Informática Gestión gratuita de proyectos de código abierto Proyectos públicos por defecto y gratis Es posible tener proyectos privados pagando
  • Universidad de Oviedo Arquitectura del Software Github Facilidades como repositorio de proyectos Gestión de issues/milestones Wiki Seguimiento de repositorios, usuarios, etc. Escuela de Ingeniería Informática Pull Requests Solicitar combinaciones y mezclas Revisiones de código Permite incluir comentarios, ver diferencias, etc. Gestión de listas de pull requests
  • Universidad de Oviedo Arquitectura del Software Referencias Tutoriales Escuela de Ingeniería Informática http://rogerdudler.github.com/git-guide/ https://www.atlassian.com/git http://training.github.com/materials/slides/ http://nvie.com/posts/a-successful-git-branchingmodel/ Vídeos http://vimeo.com/49444883