SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
+
Betabeers Córdoba XII

@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…
● Coworker feliz en coSfera
Betabeers Córdoba XII

@sergiogomez
● Desarrollo e infraestructuras avanzadas de VoIP
● Servidores de streaming de radio y TV
● Cloud, hosting avanzado, VPS y servidores dedicados

Betabeers Córdoba XII

@sergiogomez
git
+ Sistema de control de versiones distribuido, open source y gratuito
+ 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

Betabeers Córdoba XII

@sergiogomez
git + distribuido

Imagen: http://nvie.com/posts/a-successful-git-branching-model/

Betabeers Córdoba XII

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

Betabeers Córdoba XII

@sergiogomez
git + instalación
+ 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

Betabeers Córdoba XII

@sergiogomez
git + gitk (linux)

Betabeers Córdoba XII

@sergiogomez
git + gitx (mac)

Betabeers Córdoba XII

@sergiogomez
git + gitx-dev (mac)

Betabeers Córdoba XII

@sergiogomez
git + github for mac

Betabeers Córdoba XII

@sergiogomez
git + github for windows

Betabeers Córdoba XII

@sergiogomez
git + configuración
+ 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"

Betabeers Córdoba XII

@sergiogomez
git + 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

Betabeers Córdoba XII

@sergiogomez
git + 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

Betabeers Córdoba XII

@sergiogomez
git + 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

Betabeers Córdoba XII

@sergiogomez
git + staging area
+ Git usa un proceso de dos pasos para subir tus snapshots al repositorio:
Paso 1
Paso 2

añadir ficheros y cambios al staging area
git add
git commit confirmar ficheros y cambios al repositorio local

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

Betabeers Córdoba XII

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

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

Betabeers Córdoba XII

@sergiogomez
git + commit
+ Es el comando con el que se suben los cambios del staging 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 staging area
$ git commit -a -m 'Cambios realizados'

Betabeers Córdoba XII

@sergiogomez
git + ¿se te ha escapado un commit?

Imagen: http://www.librodearena.com/post/rompetejas/la-petra-nada-una-mas-que-cagar-juntitos/4384204/311860

Betabeers Córdoba XII

@sergiogomez
git + amend
+ Permite corregir (enmendar) el último commit
$ git commit --amend

Betabeers Córdoba XII

@sergiogomez
git + diff
+ 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

Betabeers Córdoba XII

@sergiogomez
git + diff

Betabeers Córdoba XII

@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

Betabeers Córdoba XII

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

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
git + 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^

Betabeers Córdoba XII

@sergiogomez
git + 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

Betabeers Córdoba XII

@sergiogomez
git + 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}

Betabeers Córdoba XII

@sergiogomez
git + branches
+ 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

Betabeers Córdoba XII

@sergiogomez
git + branches
+ 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

Betabeers Córdoba XII

@sergiogomez
git + flujo habitual

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

Betabeers Córdoba XII

@sergiogomez
git + 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
Betabeers Córdoba XII

@sergiogomez
git + 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

Betabeers Córdoba XII

@sergiogomez
git + tags
+ 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'

Betabeers Córdoba XII

@sergiogomez
git + repositorios remotos
+ Es lo habitual a la hora de colaborar con otros programadores (github…)
+ 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
$
$
$
$
$

git
git
git
git
git

remote
remote
remote
remote
remote

Betabeers Córdoba XII

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

@sergiogomez
git + 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

Betabeers Córdoba XII

@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

Betabeers Córdoba XII

@sergiogomez
github + crear una cuenta

Betabeers Córdoba XII

@sergiogomez
github + crear un repositorio

Betabeers Córdoba XII

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

Betabeers Córdoba XII

@sergiogomez
github + 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.

Betabeers Córdoba XII

@sergiogomez
github + búsquedas

Betabeers Córdoba XII

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

Betabeers Córdoba XII

@sergiogomez
github + 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)

Betabeers Córdoba XII

@sergiogomez
github + issues

Betabeers Córdoba XII

@sergiogomez
github + milestones

Betabeers Córdoba XII

@sergiogomez
gitolite + git en tu servidor
$ git clone git://github.com/sitaramc/gitolite
$ gitolite/install -ln
$ gitolite setup -pk your-name.pub

@staff
@projects

=
=

dilbert alice
foo bar

repo @projects baz
RW+
master
RW
R

=
=
=
=

@staff
ashok
ashok
wally

config hooks.emailprefix = '[%GL_REPO] '

Betabeers Córdoba XII

@sergiogomez
gitlab + ‘github’ en tu servidor

Betabeers Córdoba XII

@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
+ nvie.com/posts/a-successful-git-branching-model + Flujo de trabajo
+ 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
+ gitolite.com + Gitolite
+ gitlab.org + Gitlab
Betabeers Córdoba XII

@sergiogomez
¿¿PREGUNTAS??

Imagen: http://wallpaperpond.com/2011/04/cold-beer/

Betabeers Córdoba XII

@sergiogomez
¡¡MUCHÍSIMAS GRACIAS!!

Betabeers Córdoba XII

@sergiogomez

Más contenido relacionado

La actualidad más candente

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 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
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a gitKeopx
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a GitMario IC
 
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 colaborativoHernán Aguilera
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en españolRamón Glez
 
Control de versiones con GIT
Control de versiones con GITControl de versiones con GIT
Control de versiones con GITJulio Silva
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitSergio Rus
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada diaAlan Descoins
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de gitKeopx
 
PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHubdrsevilla
 
Repositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlosRepositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlosRoberto Carlos Flores Gomez
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPKeopx
 

La actualidad más candente (20)

Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
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
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
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 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
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a Git
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con 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
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en español
 
Control de versiones con GIT
Control de versiones con GITControl de versiones con GIT
Control de versiones con GIT
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de git
 
PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
 
Git - Gitlab
Git - GitlabGit - Gitlab
Git - Gitlab
 
Repositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlosRepositorio concesionariocochesfloresgomezrobertocarlos
Repositorio concesionariocochesfloresgomezrobertocarlos
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
 

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
 
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
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014quaip
 
Conflicting Advice on Git Usage Patterns & Their Implications
Conflicting Advice on Git Usage Patterns & Their ImplicationsConflicting Advice on Git Usage Patterns & Their Implications
Conflicting Advice on Git Usage Patterns & Their ImplicationsYoungSeok Yoon
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014quaip
 
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 (13)

Git y github
Git y githubGit y github
Git y github
 
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
 
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
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014
 
Git tips
Git tipsGit tips
Git tips
 
Conflicting Advice on Git Usage Patterns & Their Implications
Conflicting Advice on Git Usage Patterns & Their ImplicationsConflicting Advice on Git Usage Patterns & Their Implications
Conflicting Advice on Git Usage Patterns & Their Implications
 
Git
GitGit
Git
 
Git
GitGit
Git
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
Mastering GIT
Mastering GITMastering GIT
Mastering 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 - Betabeers Córdoba XII

Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC sidelab
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con gitch1l3no
 
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
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part IIMax Rodriguez
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4fyomaira
 
Uso de git para el mantenimiento de parches locales o públicos
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicosIñaki Arenaza
 
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxGuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxfuenzalidarodrigo
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y GithubJavier Novoa Cataño
 
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 gitDrPantera
 

Similar a Git + Github - Betabeers Córdoba XII (20)

Git
GitGit
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]
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
Mejorando en Git
Mejorando en GitMejorando en Git
Mejorando en Git
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
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
 
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
 
Uso de git para el mantenimiento de parches locales o públicos
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicos
 
Git 101+
Git 101+Git 101+
Git 101+
 
Mercurial
MercurialMercurial
Mercurial
 
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptxGuiaPrincipiantesGitHubrfuenzalidadev.pptx
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Gapand - por qué odio git?
Gapand - por qué odio git?Gapand - por qué odio git?
Gapand - por qué odio git?
 
Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
 
Aprendiendo GIT
Aprendiendo GITAprendiendo GIT
Aprendiendo GIT
 
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
 
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
 

Último

Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
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
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (15)

Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
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
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Git + Github - Betabeers Córdoba XII

  • 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… ● Coworker feliz en coSfera Betabeers Córdoba XII @sergiogomez
  • 3. ● Desarrollo e infraestructuras avanzadas de VoIP ● Servidores de streaming de radio y TV ● Cloud, hosting avanzado, VPS y servidores dedicados Betabeers Córdoba XII @sergiogomez
  • 4. git + Sistema de control de versiones distribuido, open source y gratuito + 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 Betabeers Córdoba XII @sergiogomez
  • 5. git + distribuido Imagen: http://nvie.com/posts/a-successful-git-branching-model/ Betabeers Córdoba XII @sergiogomez
  • 6. git + licencia libre + GNU General Public License version 2 + Algunas partes usan otras licencias, pero siempre compatibles con GPLv2 Betabeers Córdoba XII @sergiogomez
  • 7. git + instalación + 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 Betabeers Córdoba XII @sergiogomez
  • 8. git + gitk (linux) Betabeers Córdoba XII @sergiogomez
  • 9. git + gitx (mac) Betabeers Córdoba XII @sergiogomez
  • 10. git + gitx-dev (mac) Betabeers Córdoba XII @sergiogomez
  • 11. git + github for mac Betabeers Córdoba XII @sergiogomez
  • 12. git + github for windows Betabeers Córdoba XII @sergiogomez
  • 13. git + configuración + 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" Betabeers Córdoba XII @sergiogomez
  • 14. git + 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 Betabeers Córdoba XII @sergiogomez
  • 15. git + 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 Betabeers Córdoba XII @sergiogomez
  • 16. git + 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 Betabeers Córdoba XII @sergiogomez
  • 17. git + staging area + Git usa un proceso de dos pasos para subir tus snapshots al repositorio: Paso 1 Paso 2 añadir ficheros y cambios al staging area git add git commit confirmar ficheros y cambios al repositorio local Imagen: http://graph1zzlle.github.io/posts/git-basics-revisited-part2/ Betabeers Córdoba XII @sergiogomez
  • 18. git + add + Es el comando con el que se añaden los cambios al staging area $ git add README hello.rb + Se pueden subir todos los ficheros directamente $ git add . Betabeers Córdoba XII @sergiogomez
  • 19. git + commit + Es el comando con el que se suben los cambios del staging 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 staging area $ git commit -a -m 'Cambios realizados' Betabeers Córdoba XII @sergiogomez
  • 20. git + ¿se te ha escapado un commit? Imagen: http://www.librodearena.com/post/rompetejas/la-petra-nada-una-mas-que-cagar-juntitos/4384204/311860 Betabeers Córdoba XII @sergiogomez
  • 21. git + amend + Permite corregir (enmendar) el último commit $ git commit --amend Betabeers Córdoba XII @sergiogomez
  • 22. git + diff + 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 Betabeers Córdoba XII @sergiogomez
  • 23. git + diff Betabeers Córdoba XII @sergiogomez
  • 24. 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 Betabeers Córdoba XII $ # # # # # # # # # # # # # # # 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
  • 25. git + 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^ Betabeers Córdoba XII @sergiogomez
  • 26. git + 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 Betabeers Córdoba XII @sergiogomez
  • 27. git + 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} Betabeers Córdoba XII @sergiogomez
  • 28. git + branches + 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 Betabeers Córdoba XII @sergiogomez
  • 29. git + branches + 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 Betabeers Córdoba XII @sergiogomez
  • 30. git + flujo habitual Imagen: http://blogs.endjin.com/2013/04/a-step-by-step-guide-to-using-gitflow-with-teamcity-part-3-gitflow-commands/ Betabeers Córdoba XII @sergiogomez
  • 31. git + 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 Betabeers Córdoba XII @sergiogomez
  • 32. git + 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 Betabeers Córdoba XII @sergiogomez
  • 33. git + tags + 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' Betabeers Córdoba XII @sergiogomez
  • 34. git + repositorios remotos + Es lo habitual a la hora de colaborar con otros programadores (github…) + 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 $ $ $ $ $ git git git git git remote remote remote remote remote Betabeers Córdoba XII add github git@github.com:git/git.git rm github rename github origin set-url origin git://github.com/git/git.git @sergiogomez
  • 35. git + 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 Betabeers Córdoba XII @sergiogomez
  • 36. github + Alojamiento de repositorios Git públicos y privados + Red social de desarrolladores + Gestión colaborativa de proyectos de código + Hosting de proyectos Betabeers Córdoba XII @sergiogomez
  • 37. github + crear una cuenta Betabeers Córdoba XII @sergiogomez
  • 38. github + crear un repositorio Betabeers Córdoba XII @sergiogomez
  • 39. github + clonar un repositorio público $ git clone git@github.com:rails/rails.git Betabeers Córdoba XII @sergiogomez
  • 40. github + 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. Betabeers Córdoba XII @sergiogomez
  • 41. github + búsquedas Betabeers Córdoba XII @sergiogomez
  • 42. github + red social de desarrolladores + Se puede navegar por todo el código de todos los repositorios públicos Betabeers Córdoba XII @sergiogomez
  • 43. github + 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) Betabeers Córdoba XII @sergiogomez
  • 44. github + issues Betabeers Córdoba XII @sergiogomez
  • 45. github + milestones Betabeers Córdoba XII @sergiogomez
  • 46. gitolite + git en tu servidor $ git clone git://github.com/sitaramc/gitolite $ gitolite/install -ln $ gitolite setup -pk your-name.pub @staff @projects = = dilbert alice foo bar repo @projects baz RW+ master RW R = = = = @staff ashok ashok wally config hooks.emailprefix = '[%GL_REPO] ' Betabeers Córdoba XII @sergiogomez
  • 47. gitlab + ‘github’ en tu servidor Betabeers Córdoba XII @sergiogomez
  • 48. 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 + nvie.com/posts/a-successful-git-branching-model + Flujo de trabajo + 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 + gitolite.com + Gitolite + gitlab.org + Gitlab Betabeers Córdoba XII @sergiogomez