SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Introducción al Control de
versiones (git, github) y
despliegue en la nube
(heroku)!
Ingeniería de Sistemas de Información!
Grado en Ingeniería en Tecnologías de
Telecomunicación!
GSyC!
•  ©2012 Departamento GSyC, URJC!
– Algunos derechos reservados. Este trabajo se
distribuye bajo la licencia Creative Commons
Attribution-NonCommercial-ShareAlike 3.0
Unported License!
2!©GSyC!
Contenidos!
•  Introducción: control de versiones!
•  Control de versiones con Git!
•  Repositorios distribuidos: Github!
•  Despliegue de aplicaciones RoR en Heroku!
3!©GSyC!
Introducción: control de versiones!
•  Control de versiones o gestión de la configuración!
–  Version control system (VCS), Source code control (SCC), software
configuration management (SCM)!
•  Sistemas para registrar la historia de los cambios que van sufriendo un
conjunto de ficheros!
•  Sirve para: !
–  Poder saber cuándo se modificó y quién lo hizo, cada fichero de un
proyecto!
–  Poder reconstruir el estado de los ficheros al estado que tenían en algún
momento del pasado, por ejemplo para deshacer cambios que han
conducido a un error!
–  Poder coordinar los cambios que realiza un conjunto de desarrolladores
sobre los ficheros de un proyecto!
•  Sistema de control de versiones (Version Control System-VCS)!
–  Herramienta SW que ayuda a gestionar el el control de versiones!
–  Ej: SCCS, RCS, CVS, SVN, Git!
4!©GSyC!
Control de versiones con Git!
git!
•  Git es un sistema de control de versiones distribuido!
•  Repositorio o repo!
–  Guarda la historia completa de un subconjunto de ficheros del proyecto!
•  GitHub y ProjectLocker ofrecen hospedaje para git en la
red!
–  Útiles para colaborar entre varios miembros de un equipo de
desarrollo!
–  Útil para desarrolladores individuales para hacer backups del
repositorio!
–  Útil como imagen!
•  GitHub y ProjectLocker ofrecen hospedaje para git en la red!
–  Útiles para colaborar entre varios miembros de un equipo de desarrollo!
–  Útiles también para desarrolladores individuales: para hacer backups de
los ficheros de sus proyectos!
–  Útil como portfolio que vende tu imagen, para encontrar trabajo!
6!©GSyC!
git: el repositorio o repo!
•  El repo es donde git guarda la historia
completa de algún subconjunto de ficheros
del proyecto!
–  No todos los ficheros del proyecto tienen que estar en el
repositorio!
•  Para inicializar el repo de un proyecto!
1. cd <directorio-raiz-del-proyecto>
2. git init
•  El repositorio queda inicializado, pero vacío,
en !
<directorio-raiz-de- proyecto>/.git/
7!©GSyC!
git: tracked files!
•  Es el subconjunto de ficheros del proyecto que forman
parte del repositorio !
•  Sus versiones se van guardando sus versiones cada vez
que se compromete su estado (se hace commit)!
•  git add ‘*txt’ añade recursivamente los ficheros
acabados en txt al conjunto de tracked files!
•  No todos los ficheros del proyecto tienen por qué formar
parte de los tracked files: ej. ficheros intermedios como los
de log, no!
•  En .gitignore se especifican los ficheros que no deben
añadirse. Ej:!
8!©GSyC!
# a comment – línea de comentario
*.a # ignorar los ficheros que acaben en .a
!lib.a # pero sí lib.a, aunque hemos ignorado los acabados en .a
/TODO # ignorar sólo el fichero /TODO, no los ficheros TOD en subirs
build/ # ignorar todos los ficheros del subdir build/
doc/*.txt # ignorar doc/notes.txt, pero nodoc/server/arch.txt
Fichero .gitignore!
•  En el raíz del proyecto el fichero .gitignore especifica los
ficheros que no deben añadirse al repo. Ej:!
•  Ejemplo de .gitignore para RoR:!
9!©GSyC!
# a comment – línea de comentario
*.a # ignorar los ficheros que acaben en .a
!lib.a # pero sí lib.a, aunque hemos ignorado los acabados en .a
/TODO # ignorar sólo el fichero /TODO, no los ficheros TOD en subirs
build/ # ignorar todos los ficheros del subdir build/
doc/*.txt # ignorar doc/notes.txt, pero nodoc/server/arch.txt
*.rbc*
.sassc
.sass-cache
capybara-*.html
.rspec
/.bundle
/vendor/bundle
/log/*
/tmp/*
/db/*.sqlite3
/public/system/*
/coverage/
/spec/tmp/*
**.orig
rerun.txt
pickle-email-*.html
git: commit de ficheros!
•  Cuando estás contento con el estado del proyecto haces commit para
que se refleje en el repo el estado actual de los tracked files!
•  A la “foto” que guarda commit se le asigna un commit ID, obtenido
como firma digital SHA-1 (40 dígitos hexadecimales) de todos los
ficheros en su estado actual!
–  Número único en el universo (todos los repos tuyos y de otros)!
•  ¿Qué permite commit?!
–  Recuperar en el futuro el estado (foto) comprometido de los tracked files!
–  ¡NO es una copia de backup de tus ficheros!!
•  Es muy importante añadir un texto que explique el estado que se
compromete!
–  Cuando se hace commit se añade el comentario !
–  Configuración del editor que se arranca al hacer commit:!
•  git config –-global core.editor ‘vim’
–  Podemos añadir mensaje en la línea de comandos: !
git commit –m ‘msg’
10!©GSyC!
git: stage area!
•  El stage es un área en la que se almacenan los cambios que serán
comprometidos al repositorio!
–  Se pueden añadir/quitar ficheros de stage antes de comprometer!
•  git add en realidad sirve para 2 cosas:!
–  Añadir un fichero a conjunto de tracked files!
–  Añadir al stage el estado actual de un fichero: si después se modifica y luego se
compromete, el estado que va al repositorio es el que se puso en stage!
•  Si después de modificar un fichero f queremos que los nuevos
cambios acaben comprometiéndose cuando se comprometa, hay que
volver a pasarlo al stage con git add f
•  git commit compromete los ficheros del stage al repositorio!
•  git commit –a hace que el estado actual de todos los tracked files,
aunque no les hayamos hecho git add, sea el que se acabe
comprometiendo!
–  Es equivalente a hacer primero un git add de todos lo tracked files y luego git
commit
11!©GSyC!
Sesión de trabajo con git!
•  git config -–global core.editor ‘vim’
•  mkdir p1
–  Creamos nuestro proyecto en el directorio p1
•  cd p1; touch a.txt; touch b.txt
•  git init
•  git add a.txt
•  git status
•  git add b.txt
•  git status
•  git commit
•  git status
•  echo “nueva linea” > a.txt
•  git status
–  Uno de los ficheros, a.txt, tiene cambios
•  git diff
–  Muestra diferencias entre ficheros actuales y su versión stagged
–  Es decir, son los cambios que pasarían a stagged si hiciésemos git add
•  git commit -a
–  Con –a compromete el estado actual de los tracked files ficheros, no el stagged
•  git status
–  No hay cambios pendientes de comprometer
•  git log
12!©GSyC!
Repositorios distribuidos:
Github

Github: Introducción!
•  Permite almacenar gratuitamente todos los repos que
quieras!
–  Siempre que sean públicos!
–  Alternativa: projectlocker. La cuenta gratis restringe la cantidad de
datos, pero permite repos privados!
•  Sólo una vez al principio:!
–  Generas pareja clave pública/privada para autenticarte en el
servicio github con ssh!
–  Configuras git para que conozca la clave!
–  Sólo necesitas una clave para todas tus cuentas y repos!
•  Luego: usando git, haces push de tu repo a github,
creando allí una réplica!
•  Otros desarrolladores pueden hacer push de sus cambios
y pull de los de otros!
14!©GSyC!
Preparación para usar github!
1.  Crea una cuenta gratis en github!
2.  Informamos a git del nombre de usuario y del correo-e para que cada commit quede
identificado!
1.  git config –-global user.name ‘username-de-github’
2.  git config –-global user.email ‘tucorreo@electronico.com’
3.  Crea pareja de claves para ssh que te identificarán ante el servicio github:!
1.  cd ~/.ssh
2.  ssh-keygen –t rsa –C tucorreo@electronico.com
3.  <Enter> para guardar en el fichero sugerido!
4.  Introduce una passfrase, y acuérdate de ella (para no meterla en el futuro siempre: ssh-
agent bash; ssh-add)!
5.  chmod 0600 *
4.  Añade tu clave pública a github!
1.  En https://github.com/settings/ssh elige Add SSH Key!
2.  Copia los contenidos de ~/.ssh/id_rsa.pub!
3.  Ahora te pide tu password en github!
5.  Crea un repositorio remoto para cada nuevo proyecto, en https://github.com/new!
1.  Recuerda el nombre. Ejemplo: <nombre-repo-remoto>
6.  Repite los pasos 3-4 para cada máquina distinta en la que quieres tener una copia del
repo!
15!©GSyC!
Sesión de trabajo con git+github
1/4!•  Creamos cuenta, y un repo <nombre-repo-remoto> en github
–  (ver transparencia anterior)!
•   git remote add origin git@github.com:username-de-
github/<nombre-repo-remoto>.git
–  Con este comando le decimos a git que nos referiremos a nuestro repositorio
<nombre-repo-remoto> remoto de github .gitcomo origin !
•  git push origin master
–  Mandamos a origin (github) nuestro master local!
•  Supongamos que hemos invitado a nuestro repo en github a otros
usuarios (añadiendo sus claves públicas), y han modificado nuestros
ficheros haciendo git push !
•  git pull origin master
•  Obtenemos sus cambios!
•  git diff HEAD
–  Comparamos los cambios de todo (stagged y no stagged) con lo último
comprometido (HEAD)!
–  Es decir, nos dice lo que se comprometería con git commit -a
16!©GSyC!
Sesión de trabajo con git+github
2/4!•  touch c.txt
–  Añadimos fichero que no existía
•  git add c.txt
–  Añadimos fichero que no existía!
•  echo ‘hola’ > c.txt
•  git diff
•  git diff HEAD
•  git diff --staged
–  Nos da los cambios entre stagged y el último commit: aparece c.txt!
•  git reset c.txt
–  Cambiamos de opinión: quitamos de stagged c.txt:!
–  Sigue ahí, pero ahora ya no está stagged luego git commit no lo guardará en el repo!
•  git checkout -– f.txt
–  Devolver a su último estado comprometido el fichero f.txt!
–  Recuperamos así una versión anterior que nos funcionó!
17!©GSyC!
Sesión de trabajo con git+github
3/4!•  Vamos a crear una rama aparte de la rama master a la que llamamos
clean_up!
•  git branch clean_up
–  Creamos branch clean_up, alternativo al main branch o master!
•  git branch
–  Vemos ramas que tenemos en este proyecto: master y clean_up !
•  git checkout clean_up
–  Cambiamos de master a la rama clean_up. Lo que hagamos ahora con git
sólo tiene efecto en esta rama!
•  git branch
–  Vemos que efectivamente hemos cambiado!
•  git rm ‘*.txt’
–  En la nueva rama borramos los ficheros y añadimos a stage su borrado!
•  git status
•  git commit –m “mensaje…”
–  Comprometemos cambios en la rama clean_up!
18!©GSyC!
Sesión de trabajo con git+github
4/4!
•  Una vez satisfechos con la rama clean_up vamos a
mezclarla con master!
•  git checkout master
–  Volvemos a la rama master!
•  git merge clean_up
–  Mezclamos cambios de clean_up con master!
•  git branch –d clean_up
–  Eliminamos la rama clean_up!
•  git push origin master
–  Acabamos haciendo push a github de la rama master!
19!©GSyC!
Despliegue de aplicaciones
RoR en Heroku

Despliegue en heroku!
•  Heroku proporciona servicios PaaS (Platform-as-a-Service) para RoR,
Django,…!
•  Créate una cuenta gratis en heroku.com!
•  En tu máquina: heroku login!
–  Subirá tu clave pública para que puedas luego autenticarte automáticamente cuando
ejecutes otros comandos de heroku!
–  Si cambiases tu clave pública tienes que volver a subirla a heroku:!
heroku keys:add ~/.ssh/id_rsa.pub!
•  La app rails correrá en el entorno de producción de heroku!
–  Heroku instalará las gemas del grupo :production de tu Gemfile!
–  Heroku utiliza PostgreSQL, así que asegúrate de que la gema de PostgreSQL (pg)
aparece listada en el grupo :production!
•  Corre bundle en tu repo local, por última vez antes de desplegar!
bundle install -–path vendor/bundle --without production
21©GSyC
group :production do
gem 'pg’
…
end
Despliegue en heroku!
•  El código de tu app debe estar bajo git, ¡incluyendo el Gemfile claro!!
–  Asegúrate de comprometer a tu repo todo antes de desplegar!
–  Asegúrate de que todo funciona en local!
•  Será la rama master del repo de tu app RoR la que se suba a heroku
y se arranque despliegue!
•  heroku create –-stack cedar
–  Esto sólo lo hacemos la 1ª vez que desplegamos una nueva aplicación RoR en
heroku!
–  Apunta la url que te devuelve. La puedes cambiar en heroku.com por otra cosa
más manejable!
•  git push heroku master
–  Esto lo hacemos cada vez que queremos subir una nueva versión de la app de
nuestro repo!
–  Manda a heroku todos los ficheros comprometidos, y arranca en heroku la
aplicación!
–  Fíjate en la salida por si hay errores al desplegar!
22!©GSyC!
Despliegue en heroku!
•  heroku ps
–  Comprueba cómo fue todo con !
•  heroku run rake db:migrate
–  Crea las migraciones en la BD de producción!
•  heroku run rake db:seed
–  Poblamos la base de datos con
•  Comandos equivalentes (devel / producción con heroku):!
23!©GSyC!
Repo local (development)! Heroku (producción)!
rails server git push heroku master
rails console heroku run console
rake db:migrate heroku run rake db:migrate
more log/development.log heroku logs
Referencias!
•  Pro Git: libro sobre git!
– http://git-scm.com/book!
•  Docs en heroku.com!
•  Docs en github.com!
24!©GSyC!

Weitere ähnliche Inhalte

Was ist angesagt?

PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
drsevilla
 

Was ist angesagt? (20)

PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
 
Git / Guía Básica
Git / Guía BásicaGit / Guía Básica
Git / Guía Básica
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Fundamentos de GIt y Github
Fundamentos de GIt y GithubFundamentos de GIt y Github
Fundamentos de GIt y Github
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
Control de versiones con Git y Github
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Github
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
Git + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XII
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a Git
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ide
 
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesGit y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
 

Andere mochten auch (8)

Presentacion Insignia - Instituto Coviello - Introduccion a Computación en l...
Presentacion Insignia  - Instituto Coviello - Introduccion a Computación en l...Presentacion Insignia  - Instituto Coviello - Introduccion a Computación en l...
Presentacion Insignia - Instituto Coviello - Introduccion a Computación en l...
 
Dominando dynos en heroku
Dominando dynos en herokuDominando dynos en heroku
Dominando dynos en heroku
 
Acerca de salesforce
Acerca de salesforceAcerca de salesforce
Acerca de salesforce
 
Intro a Heroku
Intro a HerokuIntro a Heroku
Intro a Heroku
 
Heroku 101 py con 2015 - David Gouldin
Heroku 101   py con 2015 - David GouldinHeroku 101   py con 2015 - David Gouldin
Heroku 101 py con 2015 - David Gouldin
 
Salesforce Intro
Salesforce IntroSalesforce Intro
Salesforce Intro
 
What Is Salesforce? | Salesforce Training - What Does Salesforce Do? | Salesf...
What Is Salesforce? | Salesforce Training - What Does Salesforce Do? | Salesf...What Is Salesforce? | Salesforce Training - What Does Salesforce Do? | Salesf...
What Is Salesforce? | Salesforce Training - What Does Salesforce Do? | Salesf...
 
Que es un Salesforce?
Que es un Salesforce?Que es un Salesforce?
Que es un Salesforce?
 

Ähnlich wie 05 intro-git-github-heroku-v4

Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora BlancoPresentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
Antonio Luque Bravo
 

Ähnlich wie 05 intro-git-github-heroku-v4 (20)

Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Aprendiendo GIT
Aprendiendo GITAprendiendo GIT
Aprendiendo GIT
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
 
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxGuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gitters
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/push
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Repositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlosRepositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlos
 
GIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfGIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdf
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Git
GitGit
Git
 
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora BlancoPresentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
 
Git - Gitlab
Git - GitlabGit - Gitlab
Git - Gitlab
 
Instrucciones_Git.pdf
Instrucciones_Git.pdfInstrucciones_Git.pdf
Instrucciones_Git.pdf
 
Mercurial
MercurialMercurial
Mercurial
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
 
Flujos de trabajo y mejores prácticas en git
Flujos de trabajo y mejores prácticas en gitFlujos de trabajo y mejores prácticas en git
Flujos de trabajo y mejores prácticas en git
 
Git res baz ec - final
Git   res baz ec - finalGit   res baz ec - final
Git res baz ec - final
 

Kürzlich hochgeladen

ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
evercoyla
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
BRAYANJOSEPTSANJINEZ
 

Kürzlich hochgeladen (20)

413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt
413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt
413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUQUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 

05 intro-git-github-heroku-v4

  • 1. Introducción al Control de versiones (git, github) y despliegue en la nube (heroku)! Ingeniería de Sistemas de Información! Grado en Ingeniería en Tecnologías de Telecomunicación! GSyC!
  • 2. •  ©2012 Departamento GSyC, URJC! – Algunos derechos reservados. Este trabajo se distribuye bajo la licencia Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License! 2!©GSyC!
  • 3. Contenidos! •  Introducción: control de versiones! •  Control de versiones con Git! •  Repositorios distribuidos: Github! •  Despliegue de aplicaciones RoR en Heroku! 3!©GSyC!
  • 4. Introducción: control de versiones! •  Control de versiones o gestión de la configuración! –  Version control system (VCS), Source code control (SCC), software configuration management (SCM)! •  Sistemas para registrar la historia de los cambios que van sufriendo un conjunto de ficheros! •  Sirve para: ! –  Poder saber cuándo se modificó y quién lo hizo, cada fichero de un proyecto! –  Poder reconstruir el estado de los ficheros al estado que tenían en algún momento del pasado, por ejemplo para deshacer cambios que han conducido a un error! –  Poder coordinar los cambios que realiza un conjunto de desarrolladores sobre los ficheros de un proyecto! •  Sistema de control de versiones (Version Control System-VCS)! –  Herramienta SW que ayuda a gestionar el el control de versiones! –  Ej: SCCS, RCS, CVS, SVN, Git! 4!©GSyC!
  • 6. git! •  Git es un sistema de control de versiones distribuido! •  Repositorio o repo! –  Guarda la historia completa de un subconjunto de ficheros del proyecto! •  GitHub y ProjectLocker ofrecen hospedaje para git en la red! –  Útiles para colaborar entre varios miembros de un equipo de desarrollo! –  Útil para desarrolladores individuales para hacer backups del repositorio! –  Útil como imagen! •  GitHub y ProjectLocker ofrecen hospedaje para git en la red! –  Útiles para colaborar entre varios miembros de un equipo de desarrollo! –  Útiles también para desarrolladores individuales: para hacer backups de los ficheros de sus proyectos! –  Útil como portfolio que vende tu imagen, para encontrar trabajo! 6!©GSyC!
  • 7. git: el repositorio o repo! •  El repo es donde git guarda la historia completa de algún subconjunto de ficheros del proyecto! –  No todos los ficheros del proyecto tienen que estar en el repositorio! •  Para inicializar el repo de un proyecto! 1. cd <directorio-raiz-del-proyecto> 2. git init •  El repositorio queda inicializado, pero vacío, en ! <directorio-raiz-de- proyecto>/.git/ 7!©GSyC!
  • 8. git: tracked files! •  Es el subconjunto de ficheros del proyecto que forman parte del repositorio ! •  Sus versiones se van guardando sus versiones cada vez que se compromete su estado (se hace commit)! •  git add ‘*txt’ añade recursivamente los ficheros acabados en txt al conjunto de tracked files! •  No todos los ficheros del proyecto tienen por qué formar parte de los tracked files: ej. ficheros intermedios como los de log, no! •  En .gitignore se especifican los ficheros que no deben añadirse. Ej:! 8!©GSyC! # a comment – línea de comentario *.a # ignorar los ficheros que acaben en .a !lib.a # pero sí lib.a, aunque hemos ignorado los acabados en .a /TODO # ignorar sólo el fichero /TODO, no los ficheros TOD en subirs build/ # ignorar todos los ficheros del subdir build/ doc/*.txt # ignorar doc/notes.txt, pero nodoc/server/arch.txt
  • 9. Fichero .gitignore! •  En el raíz del proyecto el fichero .gitignore especifica los ficheros que no deben añadirse al repo. Ej:! •  Ejemplo de .gitignore para RoR:! 9!©GSyC! # a comment – línea de comentario *.a # ignorar los ficheros que acaben en .a !lib.a # pero sí lib.a, aunque hemos ignorado los acabados en .a /TODO # ignorar sólo el fichero /TODO, no los ficheros TOD en subirs build/ # ignorar todos los ficheros del subdir build/ doc/*.txt # ignorar doc/notes.txt, pero nodoc/server/arch.txt *.rbc* .sassc .sass-cache capybara-*.html .rspec /.bundle /vendor/bundle /log/* /tmp/* /db/*.sqlite3 /public/system/* /coverage/ /spec/tmp/* **.orig rerun.txt pickle-email-*.html
  • 10. git: commit de ficheros! •  Cuando estás contento con el estado del proyecto haces commit para que se refleje en el repo el estado actual de los tracked files! •  A la “foto” que guarda commit se le asigna un commit ID, obtenido como firma digital SHA-1 (40 dígitos hexadecimales) de todos los ficheros en su estado actual! –  Número único en el universo (todos los repos tuyos y de otros)! •  ¿Qué permite commit?! –  Recuperar en el futuro el estado (foto) comprometido de los tracked files! –  ¡NO es una copia de backup de tus ficheros!! •  Es muy importante añadir un texto que explique el estado que se compromete! –  Cuando se hace commit se añade el comentario ! –  Configuración del editor que se arranca al hacer commit:! •  git config –-global core.editor ‘vim’ –  Podemos añadir mensaje en la línea de comandos: ! git commit –m ‘msg’ 10!©GSyC!
  • 11. git: stage area! •  El stage es un área en la que se almacenan los cambios que serán comprometidos al repositorio! –  Se pueden añadir/quitar ficheros de stage antes de comprometer! •  git add en realidad sirve para 2 cosas:! –  Añadir un fichero a conjunto de tracked files! –  Añadir al stage el estado actual de un fichero: si después se modifica y luego se compromete, el estado que va al repositorio es el que se puso en stage! •  Si después de modificar un fichero f queremos que los nuevos cambios acaben comprometiéndose cuando se comprometa, hay que volver a pasarlo al stage con git add f •  git commit compromete los ficheros del stage al repositorio! •  git commit –a hace que el estado actual de todos los tracked files, aunque no les hayamos hecho git add, sea el que se acabe comprometiendo! –  Es equivalente a hacer primero un git add de todos lo tracked files y luego git commit 11!©GSyC!
  • 12. Sesión de trabajo con git! •  git config -–global core.editor ‘vim’ •  mkdir p1 –  Creamos nuestro proyecto en el directorio p1 •  cd p1; touch a.txt; touch b.txt •  git init •  git add a.txt •  git status •  git add b.txt •  git status •  git commit •  git status •  echo “nueva linea” > a.txt •  git status –  Uno de los ficheros, a.txt, tiene cambios •  git diff –  Muestra diferencias entre ficheros actuales y su versión stagged –  Es decir, son los cambios que pasarían a stagged si hiciésemos git add •  git commit -a –  Con –a compromete el estado actual de los tracked files ficheros, no el stagged •  git status –  No hay cambios pendientes de comprometer •  git log 12!©GSyC!
  • 14. Github: Introducción! •  Permite almacenar gratuitamente todos los repos que quieras! –  Siempre que sean públicos! –  Alternativa: projectlocker. La cuenta gratis restringe la cantidad de datos, pero permite repos privados! •  Sólo una vez al principio:! –  Generas pareja clave pública/privada para autenticarte en el servicio github con ssh! –  Configuras git para que conozca la clave! –  Sólo necesitas una clave para todas tus cuentas y repos! •  Luego: usando git, haces push de tu repo a github, creando allí una réplica! •  Otros desarrolladores pueden hacer push de sus cambios y pull de los de otros! 14!©GSyC!
  • 15. Preparación para usar github! 1.  Crea una cuenta gratis en github! 2.  Informamos a git del nombre de usuario y del correo-e para que cada commit quede identificado! 1.  git config –-global user.name ‘username-de-github’ 2.  git config –-global user.email ‘tucorreo@electronico.com’ 3.  Crea pareja de claves para ssh que te identificarán ante el servicio github:! 1.  cd ~/.ssh 2.  ssh-keygen –t rsa –C tucorreo@electronico.com 3.  <Enter> para guardar en el fichero sugerido! 4.  Introduce una passfrase, y acuérdate de ella (para no meterla en el futuro siempre: ssh- agent bash; ssh-add)! 5.  chmod 0600 * 4.  Añade tu clave pública a github! 1.  En https://github.com/settings/ssh elige Add SSH Key! 2.  Copia los contenidos de ~/.ssh/id_rsa.pub! 3.  Ahora te pide tu password en github! 5.  Crea un repositorio remoto para cada nuevo proyecto, en https://github.com/new! 1.  Recuerda el nombre. Ejemplo: <nombre-repo-remoto> 6.  Repite los pasos 3-4 para cada máquina distinta en la que quieres tener una copia del repo! 15!©GSyC!
  • 16. Sesión de trabajo con git+github 1/4!•  Creamos cuenta, y un repo <nombre-repo-remoto> en github –  (ver transparencia anterior)! •   git remote add origin git@github.com:username-de- github/<nombre-repo-remoto>.git –  Con este comando le decimos a git que nos referiremos a nuestro repositorio <nombre-repo-remoto> remoto de github .gitcomo origin ! •  git push origin master –  Mandamos a origin (github) nuestro master local! •  Supongamos que hemos invitado a nuestro repo en github a otros usuarios (añadiendo sus claves públicas), y han modificado nuestros ficheros haciendo git push ! •  git pull origin master •  Obtenemos sus cambios! •  git diff HEAD –  Comparamos los cambios de todo (stagged y no stagged) con lo último comprometido (HEAD)! –  Es decir, nos dice lo que se comprometería con git commit -a 16!©GSyC!
  • 17. Sesión de trabajo con git+github 2/4!•  touch c.txt –  Añadimos fichero que no existía •  git add c.txt –  Añadimos fichero que no existía! •  echo ‘hola’ > c.txt •  git diff •  git diff HEAD •  git diff --staged –  Nos da los cambios entre stagged y el último commit: aparece c.txt! •  git reset c.txt –  Cambiamos de opinión: quitamos de stagged c.txt:! –  Sigue ahí, pero ahora ya no está stagged luego git commit no lo guardará en el repo! •  git checkout -– f.txt –  Devolver a su último estado comprometido el fichero f.txt! –  Recuperamos así una versión anterior que nos funcionó! 17!©GSyC!
  • 18. Sesión de trabajo con git+github 3/4!•  Vamos a crear una rama aparte de la rama master a la que llamamos clean_up! •  git branch clean_up –  Creamos branch clean_up, alternativo al main branch o master! •  git branch –  Vemos ramas que tenemos en este proyecto: master y clean_up ! •  git checkout clean_up –  Cambiamos de master a la rama clean_up. Lo que hagamos ahora con git sólo tiene efecto en esta rama! •  git branch –  Vemos que efectivamente hemos cambiado! •  git rm ‘*.txt’ –  En la nueva rama borramos los ficheros y añadimos a stage su borrado! •  git status •  git commit –m “mensaje…” –  Comprometemos cambios en la rama clean_up! 18!©GSyC!
  • 19. Sesión de trabajo con git+github 4/4! •  Una vez satisfechos con la rama clean_up vamos a mezclarla con master! •  git checkout master –  Volvemos a la rama master! •  git merge clean_up –  Mezclamos cambios de clean_up con master! •  git branch –d clean_up –  Eliminamos la rama clean_up! •  git push origin master –  Acabamos haciendo push a github de la rama master! 19!©GSyC!
  • 21. Despliegue en heroku! •  Heroku proporciona servicios PaaS (Platform-as-a-Service) para RoR, Django,…! •  Créate una cuenta gratis en heroku.com! •  En tu máquina: heroku login! –  Subirá tu clave pública para que puedas luego autenticarte automáticamente cuando ejecutes otros comandos de heroku! –  Si cambiases tu clave pública tienes que volver a subirla a heroku:! heroku keys:add ~/.ssh/id_rsa.pub! •  La app rails correrá en el entorno de producción de heroku! –  Heroku instalará las gemas del grupo :production de tu Gemfile! –  Heroku utiliza PostgreSQL, así que asegúrate de que la gema de PostgreSQL (pg) aparece listada en el grupo :production! •  Corre bundle en tu repo local, por última vez antes de desplegar! bundle install -–path vendor/bundle --without production 21©GSyC group :production do gem 'pg’ … end
  • 22. Despliegue en heroku! •  El código de tu app debe estar bajo git, ¡incluyendo el Gemfile claro!! –  Asegúrate de comprometer a tu repo todo antes de desplegar! –  Asegúrate de que todo funciona en local! •  Será la rama master del repo de tu app RoR la que se suba a heroku y se arranque despliegue! •  heroku create –-stack cedar –  Esto sólo lo hacemos la 1ª vez que desplegamos una nueva aplicación RoR en heroku! –  Apunta la url que te devuelve. La puedes cambiar en heroku.com por otra cosa más manejable! •  git push heroku master –  Esto lo hacemos cada vez que queremos subir una nueva versión de la app de nuestro repo! –  Manda a heroku todos los ficheros comprometidos, y arranca en heroku la aplicación! –  Fíjate en la salida por si hay errores al desplegar! 22!©GSyC!
  • 23. Despliegue en heroku! •  heroku ps –  Comprueba cómo fue todo con ! •  heroku run rake db:migrate –  Crea las migraciones en la BD de producción! •  heroku run rake db:seed –  Poblamos la base de datos con •  Comandos equivalentes (devel / producción con heroku):! 23!©GSyC! Repo local (development)! Heroku (producción)! rails server git push heroku master rails console heroku run console rake db:migrate heroku run rake db:migrate more log/development.log heroku logs
  • 24. Referencias! •  Pro Git: libro sobre git! – http://git-scm.com/book! •  Docs en heroku.com! •  Docs en github.com! 24!©GSyC!