SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
+
Sysmana 2014

@sergiogomez
Sergio Gómez - @sergiogomez
“Una vida dedicada a la sonrisa, a mis niños, y al rock and roll”

● Socio fundador de QuaiP.com
● Web Developer Ruby on Rails / HTML / CSS / jQuery
● SysOp LAMP, git…
Sysmana 2014

@sergiogomez
● Desarrollo e infraestructuras avanzadas de VoIP
● Servidores de streaming de radio y TV
● Web Hosting Avanzado, VPS y Servidores Dedicados

Sysmana 2014

@sergiogomez
git
+ Sistema de control de versiones distribuido gratuito y open source
+ Creado por Linus Torvalds, para su uso en el desarrollo del kernel de Linux
+ Rápido, sólido, estable y fácilmente conectable
+ Desde cero, o a partir de Subversion y CVS

Sysmana 2014

@sergiogomez
licencia
+ GNU General Public License version 2
+ Algunas partes usan otras licencias, pero siempre compatibles con GPLv2

Sysmana 2014

@sergiogomez
instalación de git
+ Disponible en Linux, Mac OS X, Windows y Solaris
Debian/Ubuntu
$ apt-get install git
Fedora
$ yum install git
Gentoo
$ emerge --ask --verbose dev-vcs/git

Sysmana 2014

@sergiogomez
interfaces gráficas: gitk (linux)

Sysmana 2014

@sergiogomez
interfaces gráficas: gitx (mac)

Sysmana 2014

@sergiogomez
interfaces gráficas: gitx-dev (mac)

Sysmana 2014

@sergiogomez
interfaces gráficas: github for mac

Sysmana 2014

@sergiogomez
interfaces gráficas: github for windows

Sysmana 2014

@sergiogomez
configuración de git
+ Necesario para identificar el trabajo que se realiza
$ git config --global user.name "Sergio Gómez"
$ git config --global user.email "sergio@quaip.com"

+ Puede ser distinto en cada repositorio
$ cd repositorio
$ git config user.name "Sergio Gómez"
$ git config user.email "sergiogomez@gmail.com"

Sysmana 2014

@sergiogomez
creación de un repositorio local
+ Puede crearse un repositorio desde cero
$ mkdir some-repository
$ cd some-repository
$ git init

+ O crearse desde una carpeta con código
$ cd project
$ git init

Sysmana 2014

@sergiogomez
clonar un repositorio remoto
+ Crea una copia local de un repositorio remoto para comenzar a trabajar
directamente con él
$ git clone https://github.com/drone/drone.git
Cloning into 'drone'...
remote: Counting objects: 590, done.
remote: Compressing objects: 100% (339/339), done.
remote: Total 590 (delta 265), reused 519 (delta 227)
Receiving objects: 100% (590/590), 176.08 KiB | 205.00 KiB/s, done.
Resolving deltas: 100% (265/265), done.
Checking connectivity... done
$ cd drone/
$ ls
AUTHORS
LICENSE
Makefile README.md
bin
cmd
deb

Sysmana 2014

@sergiogomez
snapshotting
+ En git, básicamente lo que hacemos es componer y guardar snapshots
(instantáneas) de un proyecto, trabajar con ellas y compararlas

Imagen: http://slid.es/gruizdevilla/introduccion-a-git

Sysmana 2014

@sergiogomez
staging area (el índice)
+ Git usa un proceso de dos pasos para subir tus snapshots al repositorio:
Paso 1
Paso 2
local

git add
git commit

añadir ficheros y cambios al índice
confirmar ficheros y cambios al repositorio

Imagen: http://graph1zzlle.github.io/posts/git-basics-revisited-part2/

Sysmana 2014

@sergiogomez
add
+ Es el comando con el que se añaden los cambios al índice
$ git add README hello.rb

+ Se pueden subir todos los ficheros directamente
$ git add .

Sysmana 2014

@sergiogomez
commit
+ Es el comando con el que se suben los cambios del índice al repositorio
$ git commit

+ Es necesario incluir un mensaje que describa lo que se ha hecho
$ git commit -m 'Cambios realizados'

+ Añadir automáticamente todos los cambios en los ficheros del índice
$ git commit -a -m 'Cambios realizados'

Sysmana 2014

@sergiogomez
diferencias
+ Es la forma (que usan los buenos) de ver el código que ha cambiado desde
el último commit y que no ha sido subido al índice:
$ diff --git a/hello.rb b/hello.rb
index d62ac43..8d15d50 100644
--- a/hello.rb
+++ b/hello.rb
@@ -1,7 +1,7 @@
class HelloWorld

+

def self.hello
puts "hello world"
puts "hola mundo"
end

end

Sysmana 2014

@sergiogomez
git status
+ En todo momento podemos ver la situación de nuestra copia local:
+ Ficheros cambiados y añadidos al índice
listos para el siguiente commit
+ Ficheros cambiados pero que no están
añadidos al índice
+ Ficheros sin registrar por el índice
+ Rama en la que estás trabajando
+ Número de commits que aún no están
en el repositorio remoto

Sysmana 2014

$
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#

git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file:
new file:

README
hello.rb

Changed but
(use "git
(use "git
modified:

not updated:
add <file>..." to update what will be...
checkout -- <file>..." to discard chan... #
README

@sergiogomez
deshacer
+ Al contrario que en la vida real, en git es realmente sencillo volver hacia
atrás, deshacer acciones, e incluso reescribir la historia:
Quitar un fichero del índice que ha cambiado
$ git reset HEAD -- path/to/file

Quitar un fichero nuevo del índice
$ git rm --cached path/to/file

Quieres deshacer los cambios de un fichero que no está en el índice
$ git checkout -- path/to/file

Has hecho un commit y lo quieres deshacer
$ git reset --soft HEAD^

Sysmana 2014

@sergiogomez
mover y borrar ficheros
+ Mover un fichero
$ git mv source target

+ Borrar un fichero
$ git rm -- path/to/file

+ Borrar una carpeta
$ git rn .r .. path/to/dir

Sysmana 2014

@sergiogomez
stash
+ Guardar los cambios sin subir al índice a una pila de cambios (stack)
$ git stash

+ Retomar los cambios y quitarlos de la pila
$ git stash pop

=

$ git stash apply; git stash drop

+ Ver pila de cambios
$ git stash list

+ Aplicar un cambio concreto de la pila
$ git stash apply stash@{1}

Sysmana 2014

@sergiogomez
branches (ramas)
+ Crear rama
$ git branch nombre-de-rama

+ Cambiar a una rama
$ git checkout nombre-de-rama

+ Ver todas las ramas
$ git branch

+ Crear y cambiar a una rama (en un solo paso)
$ git checkout -b nombre-de-rama

Sysmana 2014

@sergiogomez
branches (ramas)
+ Borrar rama (sólo si no estás en ella)
$ git branch -d nombre-de-rama

+ Fusionar ramas (merge)
Es uno de los pasos más importantes, y se usa para incorporar los cambios realizados en una rama a
otra rama (por ejemplo, de la rama “nombre-de-rama” a la rama “master”)
$ git checkout master
$ git merge nombre-de-rama

Sysmana 2014

@sergiogomez
flujo habitual de trabajo con ramas

Imagen: http://blogs.endjin.com/2013/04/a-step-by-step-guide-to-using-gitflow-with-teamcity-part-3-gitflow-commands/

Sysmana 2014

@sergiogomez
conflictos
+ Aparecen al intentar fusionar dos ramas que incluyan distintos cambios
sobre un mismo bloque de código
$ git merge nombre-de-rama
Auto-merging README
CONFLICT (content): Merge conflict in README
Automatic merge failed; fix conflicts and then commit the result.
$ cat README
<<<<<<< HEAD
Many Hello World Examples
=======
Hello World Lang Examples
>>>>>>> fix_readme

+ No se podrá hacer commit con la fusión de las ramas hasta que se resuelvan todos los conflictos
Sysmana 2014

@sergiogomez
log
+ Muestra el log completo
$ git log

+ Versión resumida (una línea por commit)
$ git log --oneline

+ Versión resumida en modo de grafo
$ git log --oneline --graph

Sysmana 2014

@sergiogomez
tags (etiquetas)
+ Similar al commit, permite etiquetar hitos del desarrollo (versiones)
$ git tag -a v1.0 -m 'Primera versión pública'

+ Puede realizarse sobre commits anteriores
$ git tag -a v0.9 15b56f1 -m 'Primera beta interna'

Sysmana 2014

@sergiogomez
repositorios remotos
+ Es lo habitual a la hora de colaborar con otros programadores
+ También es útil para mantener copias remotas del código
+ Pueden gestionarse en cualquier momento
+ Un repositorio local puede conectarse con distintos repositorios remotos
+ Opciones para listar, añadir, eliminar, renombre y especificar URL
$
$
$
$
$

Sysmana 2014

git
git
git
git
git

remote
remote
remote
remote
remote

add github git@github.com:git/git.git
rm github
rename github origin
set-url origin git://github.com/git/git.git

@sergiogomez
repositorios remotos
+ Descargar nuevas ramas y datos de un repositorio remoto sin fusionar
$ git fetch origin

+ Descargar nuevas ramas y datos de un repositorio remoto y fusionar
$ git pull origin

+ Subir rama y sus datos a un repositorio remoto
IMPORTANTE: Sólo podrá realizarse tras haber descargado todos los cambios pendientes
$ git push origin master

Sysmana 2014

@sergiogomez
github
+ Alojamiento de repositorios Git públicos y privados
+ Red social de desarrolladores
+ Gestión colaborativa de proyectos de código
+ Hosting de proyectos

Sysmana 2014

@sergiogomez
crear una cuenta

Sysmana 2014

@sergiogomez
crear un repositorio

Sysmana 2014

@sergiogomez
clonar un repositorio público
$ git clone git@github.com:rails/rails.git

Sysmana 2014

@sergiogomez
forks de repositorios públicos
+ Podemos trabajar con un “fork” a partir del código de otros repositorios

+ Clonamos nuestro “fork” en nuestro equipo
+ Trabajamos con nuestra copia local (repositorio git)
+ Hacemos un “pull request” si queremos que el usuario original añada
nuestros cambios. Debemos explicar lo que hemos hecho y cómo se ha
hecho (convencerlo), y él decidirá si los incluye y si hay que hacer más
cambios.

Sysmana 2014

@sergiogomez
búsquedas

Sysmana 2014

@sergiogomez
red social de desarrolladores
+ Se puede navegar por todo el código de todos los repositorios públicos

Sysmana 2014

@sergiogomez
red social de desarrolladores
+ Puedes seguir a usuarios (como Twitter)
+ Puedes observar proyectos, y recibir notificaciones
cuando éstos tienen cambios
+ Puedes marcar proyectos como favoritos,
lo que te permite conocer cuáles son los
proyectos más populares (watchers + stars + forks)

Sysmana 2014

@sergiogomez
issues

Sysmana 2014

@sergiogomez
milestones

Sysmana 2014

@sergiogomez
links
+ git-scm.com + Página oficial de git
+ try.github.io + Aprende git desde el navegador
+ git-scm.com/book + Libro completo sobre git (licencia Creative Commons)
+ www.codeschool.com/courses/try-git + Curso online gratuito de git
+ gitref.org + Referencia de git
+ guides.github.com + Guías de uso de github
+ git-scm.com/docs/gitk + Manual de Gitk
+ gitx.frim.nl + GitX
+ rowanj.github.io/gitx + GitX-dev
+ mac.github.com + GitHub Mac
+ windows.github.com + GitHub Windows
Sysmana 2014

@sergiogomez
¡¡Muchas gracias!!
a Diego Castillo @dcastillobarnes
David Muñoz @dperilla
José Ramón Albendín @jralbendin

y por supuesto

A TODOS VOSOTROS
Sysmana 2014

@sergiogomez

Más contenido relacionado

La actualidad más candente

Git y drupal
Git y drupalGit y drupal
Git y drupalJuampy NR
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada diaAlan Descoins
 
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
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaipquaip
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHPAlicantePHP
 
Introducción al uso Git y GitHub para trabajo colaborativo
Introducción al uso Git y GitHub para trabajo colaborativoIntroducción al uso Git y GitHub para trabajo colaborativo
Introducción al uso Git y GitHub para trabajo colaborativoJuan J. Merelo
 
Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Cristian Romero Matesanz
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsBEEVA_es
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de gitAntonio Ognio
 
PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHubdrsevilla
 
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balasPHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balasPablo Godel
 

La actualidad más candente (20)

Git y drupal
Git y drupalGit y drupal
Git y drupal
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
 
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
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
Introducción al uso Git y GitHub para trabajo colaborativo
Introducción al uso Git y GitHub para trabajo colaborativoIntroducción al uso Git y GitHub para trabajo colaborativo
Introducción al uso Git y GitHub para trabajo colaborativo
 
Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y Jenkins
 
Git: guia fácil para uso con Github
Git: guia fácil para uso con GithubGit: guia fácil para uso con Github
Git: guia fácil para uso con Github
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
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
 
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balasPHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
 

Destacado

Optimización Servidor Web
Optimización Servidor WebOptimización Servidor Web
Optimización Servidor Webquaip
 
Primeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls CórdobaPrimeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls Córdobaquaip
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014quaip
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學littlebtc
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Destacado (6)

Optimización Servidor Web
Optimización Servidor WebOptimización Servidor Web
Optimización Servidor Web
 
Primeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls CórdobaPrimeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls Córdoba
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similar a Git + Github - Sysmana 2014

Similar a Git + Github - Sysmana 2014 (20)

Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 
Git
GitGit
Git
 
Mejorando en Git
Mejorando en GitMejorando en Git
Mejorando en Git
 
The Gift of Git [Español: La Palabra de Git]
The Gift of Git [Español: La Palabra de Git]The Gift of Git [Español: La Palabra de Git]
The Gift of Git [Español: La Palabra de Git]
 
Mercurial
MercurialMercurial
Mercurial
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4
 
Git 101+
Git 101+Git 101+
Git 101+
 
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
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Introducción a GitFlow
Introducción a GitFlowIntroducción a GitFlow
Introducción a GitFlow
 
Aprendiendo GIT
Aprendiendo GITAprendiendo GIT
Aprendiendo GIT
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y git
 
Flujo de trabajo básico con git
Flujo de trabajo básico con gitFlujo de trabajo básico con git
Flujo de trabajo básico con git
 
Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
Versionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativoVersionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativo
 

Último

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 

Último (12)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Git + Github - Sysmana 2014

  • 2. Sergio Gómez - @sergiogomez “Una vida dedicada a la sonrisa, a mis niños, y al rock and roll” ● Socio fundador de QuaiP.com ● Web Developer Ruby on Rails / HTML / CSS / jQuery ● SysOp LAMP, git… Sysmana 2014 @sergiogomez
  • 3. ● Desarrollo e infraestructuras avanzadas de VoIP ● Servidores de streaming de radio y TV ● Web Hosting Avanzado, VPS y Servidores Dedicados Sysmana 2014 @sergiogomez
  • 4. git + Sistema de control de versiones distribuido gratuito y open source + Creado por Linus Torvalds, para su uso en el desarrollo del kernel de Linux + Rápido, sólido, estable y fácilmente conectable + Desde cero, o a partir de Subversion y CVS Sysmana 2014 @sergiogomez
  • 5. licencia + GNU General Public License version 2 + Algunas partes usan otras licencias, pero siempre compatibles con GPLv2 Sysmana 2014 @sergiogomez
  • 6. instalación de git + Disponible en Linux, Mac OS X, Windows y Solaris Debian/Ubuntu $ apt-get install git Fedora $ yum install git Gentoo $ emerge --ask --verbose dev-vcs/git Sysmana 2014 @sergiogomez
  • 7. interfaces gráficas: gitk (linux) Sysmana 2014 @sergiogomez
  • 8. interfaces gráficas: gitx (mac) Sysmana 2014 @sergiogomez
  • 9. interfaces gráficas: gitx-dev (mac) Sysmana 2014 @sergiogomez
  • 10. interfaces gráficas: github for mac Sysmana 2014 @sergiogomez
  • 11. interfaces gráficas: github for windows Sysmana 2014 @sergiogomez
  • 12. configuración de git + Necesario para identificar el trabajo que se realiza $ git config --global user.name "Sergio Gómez" $ git config --global user.email "sergio@quaip.com" + Puede ser distinto en cada repositorio $ cd repositorio $ git config user.name "Sergio Gómez" $ git config user.email "sergiogomez@gmail.com" Sysmana 2014 @sergiogomez
  • 13. creación de un repositorio local + Puede crearse un repositorio desde cero $ mkdir some-repository $ cd some-repository $ git init + O crearse desde una carpeta con código $ cd project $ git init Sysmana 2014 @sergiogomez
  • 14. clonar un repositorio remoto + Crea una copia local de un repositorio remoto para comenzar a trabajar directamente con él $ git clone https://github.com/drone/drone.git Cloning into 'drone'... remote: Counting objects: 590, done. remote: Compressing objects: 100% (339/339), done. remote: Total 590 (delta 265), reused 519 (delta 227) Receiving objects: 100% (590/590), 176.08 KiB | 205.00 KiB/s, done. Resolving deltas: 100% (265/265), done. Checking connectivity... done $ cd drone/ $ ls AUTHORS LICENSE Makefile README.md bin cmd deb Sysmana 2014 @sergiogomez
  • 15. snapshotting + En git, básicamente lo que hacemos es componer y guardar snapshots (instantáneas) de un proyecto, trabajar con ellas y compararlas Imagen: http://slid.es/gruizdevilla/introduccion-a-git Sysmana 2014 @sergiogomez
  • 16. staging area (el índice) + Git usa un proceso de dos pasos para subir tus snapshots al repositorio: Paso 1 Paso 2 local git add git commit añadir ficheros y cambios al índice confirmar ficheros y cambios al repositorio Imagen: http://graph1zzlle.github.io/posts/git-basics-revisited-part2/ Sysmana 2014 @sergiogomez
  • 17. add + Es el comando con el que se añaden los cambios al índice $ git add README hello.rb + Se pueden subir todos los ficheros directamente $ git add . Sysmana 2014 @sergiogomez
  • 18. commit + Es el comando con el que se suben los cambios del índice al repositorio $ git commit + Es necesario incluir un mensaje que describa lo que se ha hecho $ git commit -m 'Cambios realizados' + Añadir automáticamente todos los cambios en los ficheros del índice $ git commit -a -m 'Cambios realizados' Sysmana 2014 @sergiogomez
  • 19. diferencias + Es la forma (que usan los buenos) de ver el código que ha cambiado desde el último commit y que no ha sido subido al índice: $ diff --git a/hello.rb b/hello.rb index d62ac43..8d15d50 100644 --- a/hello.rb +++ b/hello.rb @@ -1,7 +1,7 @@ class HelloWorld + def self.hello puts "hello world" puts "hola mundo" end end Sysmana 2014 @sergiogomez
  • 20. git status + En todo momento podemos ver la situación de nuestra copia local: + Ficheros cambiados y añadidos al índice listos para el siguiente commit + Ficheros cambiados pero que no están añadidos al índice + Ficheros sin registrar por el índice + Rama en la que estás trabajando + Número de commits que aún no están en el repositorio remoto Sysmana 2014 $ # # # # # # # # # # # # # # # git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: new file: README hello.rb Changed but (use "git (use "git modified: not updated: add <file>..." to update what will be... checkout -- <file>..." to discard chan... # README @sergiogomez
  • 21. deshacer + Al contrario que en la vida real, en git es realmente sencillo volver hacia atrás, deshacer acciones, e incluso reescribir la historia: Quitar un fichero del índice que ha cambiado $ git reset HEAD -- path/to/file Quitar un fichero nuevo del índice $ git rm --cached path/to/file Quieres deshacer los cambios de un fichero que no está en el índice $ git checkout -- path/to/file Has hecho un commit y lo quieres deshacer $ git reset --soft HEAD^ Sysmana 2014 @sergiogomez
  • 22. mover y borrar ficheros + Mover un fichero $ git mv source target + Borrar un fichero $ git rm -- path/to/file + Borrar una carpeta $ git rn .r .. path/to/dir Sysmana 2014 @sergiogomez
  • 23. stash + Guardar los cambios sin subir al índice a una pila de cambios (stack) $ git stash + Retomar los cambios y quitarlos de la pila $ git stash pop = $ git stash apply; git stash drop + Ver pila de cambios $ git stash list + Aplicar un cambio concreto de la pila $ git stash apply stash@{1} Sysmana 2014 @sergiogomez
  • 24. branches (ramas) + Crear rama $ git branch nombre-de-rama + Cambiar a una rama $ git checkout nombre-de-rama + Ver todas las ramas $ git branch + Crear y cambiar a una rama (en un solo paso) $ git checkout -b nombre-de-rama Sysmana 2014 @sergiogomez
  • 25. branches (ramas) + Borrar rama (sólo si no estás en ella) $ git branch -d nombre-de-rama + Fusionar ramas (merge) Es uno de los pasos más importantes, y se usa para incorporar los cambios realizados en una rama a otra rama (por ejemplo, de la rama “nombre-de-rama” a la rama “master”) $ git checkout master $ git merge nombre-de-rama Sysmana 2014 @sergiogomez
  • 26. flujo habitual de trabajo con ramas Imagen: http://blogs.endjin.com/2013/04/a-step-by-step-guide-to-using-gitflow-with-teamcity-part-3-gitflow-commands/ Sysmana 2014 @sergiogomez
  • 27. conflictos + Aparecen al intentar fusionar dos ramas que incluyan distintos cambios sobre un mismo bloque de código $ git merge nombre-de-rama Auto-merging README CONFLICT (content): Merge conflict in README Automatic merge failed; fix conflicts and then commit the result. $ cat README <<<<<<< HEAD Many Hello World Examples ======= Hello World Lang Examples >>>>>>> fix_readme + No se podrá hacer commit con la fusión de las ramas hasta que se resuelvan todos los conflictos Sysmana 2014 @sergiogomez
  • 28. log + Muestra el log completo $ git log + Versión resumida (una línea por commit) $ git log --oneline + Versión resumida en modo de grafo $ git log --oneline --graph Sysmana 2014 @sergiogomez
  • 29. tags (etiquetas) + Similar al commit, permite etiquetar hitos del desarrollo (versiones) $ git tag -a v1.0 -m 'Primera versión pública' + Puede realizarse sobre commits anteriores $ git tag -a v0.9 15b56f1 -m 'Primera beta interna' Sysmana 2014 @sergiogomez
  • 30. repositorios remotos + Es lo habitual a la hora de colaborar con otros programadores + También es útil para mantener copias remotas del código + Pueden gestionarse en cualquier momento + Un repositorio local puede conectarse con distintos repositorios remotos + Opciones para listar, añadir, eliminar, renombre y especificar URL $ $ $ $ $ Sysmana 2014 git git git git git remote remote remote remote remote add github git@github.com:git/git.git rm github rename github origin set-url origin git://github.com/git/git.git @sergiogomez
  • 31. repositorios remotos + Descargar nuevas ramas y datos de un repositorio remoto sin fusionar $ git fetch origin + Descargar nuevas ramas y datos de un repositorio remoto y fusionar $ git pull origin + Subir rama y sus datos a un repositorio remoto IMPORTANTE: Sólo podrá realizarse tras haber descargado todos los cambios pendientes $ git push origin master Sysmana 2014 @sergiogomez
  • 32. github + Alojamiento de repositorios Git públicos y privados + Red social de desarrolladores + Gestión colaborativa de proyectos de código + Hosting de proyectos Sysmana 2014 @sergiogomez
  • 33. crear una cuenta Sysmana 2014 @sergiogomez
  • 34. crear un repositorio Sysmana 2014 @sergiogomez
  • 35. clonar un repositorio público $ git clone git@github.com:rails/rails.git Sysmana 2014 @sergiogomez
  • 36. forks de repositorios públicos + Podemos trabajar con un “fork” a partir del código de otros repositorios + Clonamos nuestro “fork” en nuestro equipo + Trabajamos con nuestra copia local (repositorio git) + Hacemos un “pull request” si queremos que el usuario original añada nuestros cambios. Debemos explicar lo que hemos hecho y cómo se ha hecho (convencerlo), y él decidirá si los incluye y si hay que hacer más cambios. Sysmana 2014 @sergiogomez
  • 38. red social de desarrolladores + Se puede navegar por todo el código de todos los repositorios públicos Sysmana 2014 @sergiogomez
  • 39. red social de desarrolladores + Puedes seguir a usuarios (como Twitter) + Puedes observar proyectos, y recibir notificaciones cuando éstos tienen cambios + Puedes marcar proyectos como favoritos, lo que te permite conocer cuáles son los proyectos más populares (watchers + stars + forks) Sysmana 2014 @sergiogomez
  • 42. links + git-scm.com + Página oficial de git + try.github.io + Aprende git desde el navegador + git-scm.com/book + Libro completo sobre git (licencia Creative Commons) + www.codeschool.com/courses/try-git + Curso online gratuito de git + gitref.org + Referencia de git + guides.github.com + Guías de uso de github + git-scm.com/docs/gitk + Manual de Gitk + gitx.frim.nl + GitX + rowanj.github.io/gitx + GitX-dev + mac.github.com + GitHub Mac + windows.github.com + GitHub Windows Sysmana 2014 @sergiogomez
  • 43. ¡¡Muchas gracias!! a Diego Castillo @dcastillobarnes David Muñoz @dperilla José Ramón Albendín @jralbendin y por supuesto A TODOS VOSOTROS Sysmana 2014 @sergiogomez