SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
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!

Contenu connexe

Tendances

PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHubdrsevilla
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitSergio Rus
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
 
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 GithubCarlos Huamaní
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 
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 Githubguest638090
 
Git + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIquaip
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con gitch1l3no
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con gitJuan Vladimir
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a GitMario IC
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPKeopx
 
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 ideferosorno
 
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 aplicacionesParadigma Digital
 

Tendances (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
 

En vedette

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...Carlos Kozuszko
 
Dominando dynos en heroku
Dominando dynos en herokuDominando dynos en heroku
Dominando dynos en herokufedesoria
 
Intro a Heroku
Intro a HerokuIntro a Heroku
Intro a Herokubitfon
 
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 GouldinHeroku
 
Salesforce Intro
Salesforce IntroSalesforce Intro
Salesforce IntroRich Helton
 
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...Edureka!
 
Que es un Salesforce?
Que es un Salesforce?Que es un Salesforce?
Que es un Salesforce?dln_11
 

En vedette (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?
 

Similaire à Control de versiones y despliegue en la nube

Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
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-USABILIDADDIEGOALBERTOENRIQUEZ4
 
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxGuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxfuenzalidarodrigo
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gittersRojomorgan
 
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/pushAlexis Lopez
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC sidelab
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
Repositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlosRepositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlosRoberto Carlos Flores Gomez
 
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.pdfMartinBonuccelli
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014quaip
 
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 BlancoAntonio Luque Bravo
 
Instrucciones_Git.pdf
Instrucciones_Git.pdfInstrucciones_Git.pdf
Instrucciones_Git.pdfBenSira1
 

Similaire à Control de versiones y despliegue en la nube (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
 

Dernier

5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptxJOSLUISCALLATAENRIQU
 
Analisis de reparación de fisuras superficiales en pavimentos.pptx
Analisis de reparación de fisuras superficiales en pavimentos.pptxAnalisis de reparación de fisuras superficiales en pavimentos.pptx
Analisis de reparación de fisuras superficiales en pavimentos.pptxasotomayorm2
 
Sistema Operativo Windows Capas Estructura
Sistema Operativo Windows Capas EstructuraSistema Operativo Windows Capas Estructura
Sistema Operativo Windows Capas EstructuraJairoMaxKevinMartine
 
Unid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitariasUnid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitariasPatriciaRaimondi
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEfrain Yungan
 
Dispositivos Semiconductores de Potencia BJT, MOSFET 01.pdf
Dispositivos Semiconductores de Potencia BJT, MOSFET 01.pdfDispositivos Semiconductores de Potencia BJT, MOSFET 01.pdf
Dispositivos Semiconductores de Potencia BJT, MOSFET 01.pdfdego18
 
Wal-Mart batalla con RFID...............
Wal-Mart batalla con RFID...............Wal-Mart batalla con RFID...............
Wal-Mart batalla con RFID...............osoriosantiago887
 
bombas-hidraulicas para permitir transporte en una instalación
bombas-hidraulicas para permitir  transporte en una instalaciónbombas-hidraulicas para permitir  transporte en una instalación
bombas-hidraulicas para permitir transporte en una instalaciónLuisLobatoingaruca
 
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxPRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxStibeCr
 
ACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptx
ACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptxACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptx
ACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptxaxelalejossantos
 
La Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfLa Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfAnthony Gualpa
 
04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptx04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptxHenryApaza12
 
Análisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaAnálisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaJoellyAlejandraRodrg
 
U1-1_UPC_ Algoritmos Conceptos Básicos.pdf
U1-1_UPC_ Algoritmos Conceptos Básicos.pdfU1-1_UPC_ Algoritmos Conceptos Básicos.pdf
U1-1_UPC_ Algoritmos Conceptos Básicos.pdfEberCV1
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptSANTOS400018
 
Transporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMECTransporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMECamador030809
 
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfINSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfautomatechcv
 
Guía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososGuía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososAdrianVarela22
 
EJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOS
EJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOSEJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOS
EJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOSLuisLopez273366
 
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdfSESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdfEsvinAlvares
 

Dernier (20)

5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
 
Analisis de reparación de fisuras superficiales en pavimentos.pptx
Analisis de reparación de fisuras superficiales en pavimentos.pptxAnalisis de reparación de fisuras superficiales en pavimentos.pptx
Analisis de reparación de fisuras superficiales en pavimentos.pptx
 
Sistema Operativo Windows Capas Estructura
Sistema Operativo Windows Capas EstructuraSistema Operativo Windows Capas Estructura
Sistema Operativo Windows Capas Estructura
 
Unid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitariasUnid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitarias
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
 
Dispositivos Semiconductores de Potencia BJT, MOSFET 01.pdf
Dispositivos Semiconductores de Potencia BJT, MOSFET 01.pdfDispositivos Semiconductores de Potencia BJT, MOSFET 01.pdf
Dispositivos Semiconductores de Potencia BJT, MOSFET 01.pdf
 
Wal-Mart batalla con RFID...............
Wal-Mart batalla con RFID...............Wal-Mart batalla con RFID...............
Wal-Mart batalla con RFID...............
 
bombas-hidraulicas para permitir transporte en una instalación
bombas-hidraulicas para permitir  transporte en una instalaciónbombas-hidraulicas para permitir  transporte en una instalación
bombas-hidraulicas para permitir transporte en una instalación
 
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxPRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
 
ACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptx
ACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptxACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptx
ACEROS DE PERFORACION, CARACTERISTICAS Y FICHAS TECNICAS.pptx
 
La Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfLa Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdf
 
04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptx04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptx
 
Análisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaAnálisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadística
 
U1-1_UPC_ Algoritmos Conceptos Básicos.pdf
U1-1_UPC_ Algoritmos Conceptos Básicos.pdfU1-1_UPC_ Algoritmos Conceptos Básicos.pdf
U1-1_UPC_ Algoritmos Conceptos Básicos.pdf
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.ppt
 
Transporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMECTransporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMEC
 
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfINSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
 
Guía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososGuía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrosos
 
EJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOS
EJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOSEJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOS
EJERCICIOS DE PROPIEDADES INDICES DE MECÁNICA DE SUELOS
 
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdfSESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
 

Control de versiones y despliegue en la nube

  • 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!