Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Taller de Git
Clase 1 - Comandos
Fernando López
LINTI
Facultad de Informática
Universidad Nacional de la Plata
16 de Octubre de 2013
Fernando López
Taller de Git
Indice
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
1 Primeros pasos
2 Moviendonos en la historia
3 Remotos
Fernando López
Taller de Git
Links
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• http:
//lihuen.linti.unlp.edu.ar/index.php?title=Git
• http://git-scm.com/book
Fernando López
Taller de Git
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Git
• Sistema de control de versiones
• Distribuido
• Cada usuario tiene toda la historia.
• El comando git no tiene que consultar nada a ningún
servidor.
• Caso kernel.org
"The code for the kernel - and for many other projects - is managed with the ’git’
source code management system. And git does not allow the code to be modified
by third parties without people knowing about it."
Fernando López
Taller de Git
Instalación y configuración
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• apt-get install git
• Cada commit queda registrado con nuestro nombre y
e-mail:
g i t
g i t
c o n f i g −−g l o b a l u s e r . name " Pipo ॷ Perez "
c o n f i g −−g l o b a l u s e r . e m a i l " p p e r e z @ s e r v i d o r . com"
• Resaltado con colores:
c o n f i g −−g l o b a l
g i t
c o l o r . u i auto
• Nuestro editor favorito para escribir los commits:
g i t
c o n f i g −−g l o b a l
c o r e . e d i t o r vim
• Un comando muy útil:
g i t
c o n f i g −−g l o b a l a l i a s . u n s t a g e
' r e s e t HEAD −−'
Fernando López
Taller de Git
Primer repositorio
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Creá un directorio con el nombre octocats.
• Convertí ese directorio en un repositorio Git:
mkdir o c t o c a t s
cd o c t o c a t s
g i t
g i t
i n i t
s t a t u s
Fernando López
Taller de Git
Primer repositorio
Las buenas prácticas
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• En general cada repositorio tiene un archivo README.
• GitHub y GitLab lo renderizan.
• ¡Se convierte en la página principal del proyecto!
https://github.com/mozilla/pdf.js
• Mínimamente tiene una descripción del proyecto, guía de
instalación y links relevantes.
• Si el archivo se llama README.md puede tener formato
con markdown.
v i README. md
g i t
s t a t u s
Fernando López
Taller de Git
¿Untracked, Staged, qué?
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Fernando López
Taller de Git
Working directory, Staging area, repository
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
f e r n a n d o @ n e t b o o k :~/ g i t / t a l l e r _ g i t $ l s −a
.
imagenes M a k e f i l e
. g i t m o d u l e s
r e v e a l . j s
s r c
. .
. g i t
. g i t i g n o r e
• taller_git → working directory
• taller_git/.git/index → staging area
• taller_git/.git → repository
Fernando López
Taller de Git
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Agregando contenido
• Creá un archivo de texto favorito.txt y escribí en él el
nombre de tu octocat favorito
(http://octodex.github.com/).
• Por ejemplo:
Jean-Luc Picat
• git status
• git add favorito.txt
• git status
• git add README.md
• git status
Fernando López
Taller de Git
Aplicar los cambios al repositorio
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• git commit
• $ g i t
s t a t u s
# On branch master
n o t h i n g to commit ( w o rk i n g d i r e c t o r y c l e a n )
Fernando López
Taller de Git
Agregar la url
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Agregá en favorito.txt el link a la imagen del octocat,
por ejemplo:
Jean-Luc Picat - http://octodex.github.com/images/jean-luc-picat.jpg
• Hacé el commit de los cambios.
• git status
• Agregá en favorito.txt otro octocat con su link.
• Hacé el commit de los cambios.
• git log
Fernando López
Taller de Git
Agregar la URL
Logs
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Logs → git log
• Cambios → git whatchanged
• Diferencia del último commit → git show
• Direrencia con el commit indicado → git diff <hash>
Fernando López
Taller de Git
Logs
Alias útiles
• Grafo:
c o n f i g −−g l o b a l a l i a s . l o l
g i t
−−p r e t t y=o n e l i n e −−abbrev−commit '
' l o g −−graph −−d e c o r a t e
• Grafo con todos los branches:
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
c o n f i g −−g l o b a l a l i a s . l o l a
g i t
−−p r e t t y=o n e l i n e −−abbrev−commit −− a l l −−d a t e=l o c a l '
' l o g −−graph −−d e c o r a t e
Fernando López
Taller de Git
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Revertir cambios
• Los versionadores permiten revertir cambios.
• Todos los cambios que hayamos hecho con su
correspondiente commit están en la historia del versionador.
• Incluso los archivos borrados.
• +----+----+
C
^- Commit actual
B
A
• Todos los commits tienen un hash que los identifica.
• Para moverse entre commits se usa
git checkout <hash>.
Fernando López
Taller de Git
Revertir cambios
Ejemplo
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Volvemos al commit anterior:
g i t
c h e c k o u t <hash_del_commit_anterior>
• Vamos al último commit:
g i t
c h e c k o u t <hash_del_commit_má s_nuevo>
• Se puede abreviar:
g i t
c h e c k o u t 2 bb833b
Fernando López
Taller de Git
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Commits con nombre
• HEAD es el commit más reciente de la rama actual.
• master es la rama que se crea por defecto en git (en
nuestro caso es la única).
B
A
• +----+----+
C
^- (master, HEAD)
• HEAD~1 es el commit anterior (B)
• HEAD~2 es el anterior a ese, etc... (A)
• Vamos a hacer lo mismo que el slide pasado pero más fácil.
Fernando López
Taller de Git
Commits con nombre
Ejemplo
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• De nuevo vamos al commit anterior:
g i t
c h e c k o u t HEAD~1
• O lo que es lo mismo:
g i t
c h e c k o u t 2 bb833b~1
• Volvemos al commit más nuevo (no podemos usar HEAD
porque lo cambiamos):
g i t
c h e c k o u t master
Fernando López
Taller de Git
Commits con nombre
Tags
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Las etiquetas indican un commit importante.
• Generalmente una versión publicada del producto.
• En git simplemente son un commit con nombre.
• Vamos a etiquetar el último commit como versión 1.0.
g i t
g i t
c h e c k o u t master
tag 1 . 0
• Podemos ver los tags: git tag.
• Podemos usarlos para movernos entre commits:
g i t
g i t
c h e c k o u t HEAD~1
c h e c k o u t 1 . 0
Fernando López
Taller de Git
¿Cómo trabajo con otra persona?
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Hasta ahora trabajamos de forma local.
• Podemos subir los repositorios a un servidor.
• Precisamos una cuenta en
https://gitlab.linti.unlp.edu.ar o en
https://github.com.
Fernando López
Taller de Git
Protocolos
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Github y Gitlab admiten 2 protocolos:
• SSH
• HTTPS
• SSH es el más cómodo pero requiere una configuración
previa.
• HTTPS es el único que funciona en la red 511-alumnos.
Fernando López
Taller de Git
Configuración de SSH
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Debemos hacer este procedimiento en los equipos que usemos
para desarrollar.
• Crear un par de claves ssh para nuestro usuario:
ssh-keygen.
• Podemos optar por ponerle password o no a la clave
privada.
• Copiar nuestra clave pública en nuestro perfil de
Github/Gitlab (todo menos la dirección de “e-mail” del
final).
$ c a t ~/. s s h / i d _ r s a . pub
ssh−r s a AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA f e r n a n d o @ f e r n a n d o
Fernando López
Taller de Git
Subir nuestro código a un servidor
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Vía web crear un repositorio octocats.
• En nuestro repositorio agregar la url que generó
Github/Gitlab como “remoto”.
remote add o r i g i n <u r l >
g i t
• Subir todos los cambios:
g i t push −u o r i g i n master
• El -u va solamente la primera vez, pone origin master
por default para los push y pull.
Fernando López
Taller de Git
Repositorios compartidos
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• Pasamos a trabajar con otro repo.
• Podemos descargarlo con clone.
• Subimos cambios con push.
• Descargamos cambios con pull.
• Hagan git clone de:
[email protected]:lihuen/octocat_viewer.git
o de
[email protected]:fernandolopez/octocat_viewer.git
Fernando López
Taller de Git
Repositorios compartidos
Trabajando
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
• mostrar.py tiene varios errores, cada uno debe corregir 1
o 2 errores y subir los cambios al servidor.
• Se considera que alguien corrigió un error si hay un push
que lo avale.
Fernando López
Taller de Git
Taller de Git
Fernando
López
Primeros
pasos
Moviendonos
en la historia
Remotos
Ejemplos de status
Local:
• Untracked files
• Changes not staged for commit
• Change
Comentarios de: Taller de Git - Clase 1 - Comandos (0)
No hay comentarios