advertisement

Git + Github - Sysmana 2014

50 %
50 %
advertisement
Information about Git + Github - Sysmana 2014
Technology

Published on February 14, 2014

Author: quaip

Source: slideshare.net

Description

Presentación de Git y Github en la Sysmana 2014, por Sergio Gómez
advertisement

+ 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

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

2014 (DianQW) · GitHub

2014 has 17 repositories written in Python, Shell, and Puppet. Follow their code on GitHub.
Read more

cs109/2014 · GitHub - GitHub · Where software is built

cs109 / 2014. Code; Issues; Pull requests; Pulse; ... Official course page here: http://cs109.github.io/2014. Status; API; Training; Shop; Blog; About ...
Read more

Git/Github IFRN 2014.1 - YouTube

Git/Github IFRN 2014.1 Mário Idival. ... Jeff Carouth - Git and Github: Working Effectively on a Team - php[tek] 2014 - Duration: 1:02:32.
Read more

icehouse-2014.1.2.yaml · GitHub

ceilometer: repo: git://github.com/openstack/ceilometer.git: tag: 2014.1.2: ceilometer-client: repo: git://github.com/openstack/python-ceilometerclient.git
Read more

2014-01-25-kinect Ubuntu · GitHub - Create a new Gist ...

2014-01-25-kinect Ubuntu. Installation notes for Ubuntu Desktop LTS 12.04 Precise. NOTE: All code is installed to ~/Developer/Work. Install Updates
Read more

Jeff Carouth - Git and Github: Working Effectively on a ...

Recording from our php[tek] 2014 Conference in Chicago on May 19-23rd. Speaker: Jeff Carouth Title: Git and Github: Working Effectively on a Team
Read more

GitHub Help - GitHub Enterprise Documentation

Help documentation for GitHub.com, GitHub Enterprise, GitHub Pages, and GitHub for Mac and Windows
Read more

Version Control With Git: Using Remote Repositories

Version Control With Git: Using Remote Repositories github.com? GitHub is a site where many people store their open (and closed) source code repositories.
Read more

Git - Book

2nd Edition (2014) Switch to 1st Edition. Download Ebook. The entire Pro Git book, ... Git Commands. A3.1 Setup and Config; A3.2 ...
Read more