PDF de programación - Git: Una introducción avanzada

Imágen de pdf Git: Una introducción avanzada

Git: Una introducción avanzadagráfica de visualizaciones

Publicado el 29 de Marzo del 2019
923 visualizaciones desde el 29 de Marzo del 2019
612,2 KB
18 paginas
Creado hace 8a (29/03/2016)
JDEROBOT TALKS

G I T : U N A I N T R O D U C C I Ó N A V A N Z A D A

1

29/03/2016

© 2015 Victor Arribas <[email protected]>

AVISO A PRINCIPIANTES

• Esta presentación no está planteada para explicar los

conceptos elementales de Git. Sin embargo podéis
planteárosla como la motivación de porqué usar Git.



• Internet está repleto de guías y tutoriales:

• https://git-scm.com/book/es/v2

• http://marklodato.github.io/visual-git-guide/index-es.html

• https://training.github.com/kit/downloads/es/github-git-cheat-

sheet.pdf

• http://www.tutorialspoint.com/git/index.htm

• https://help.github.com

• https://www.youtube.com/watch?v=fBRE5zuYUlI (videos 1 y 3)



29/03/2016



© 2015 Victor Arribas <[email protected]>

2

ÍNDICE



• Complex repos

• Subtrees, submodules, subrepos



• Powerful examples

• Gitignore automation
• Merge without branches
• Remove untracked files
• Remove big/sensitive files
• Patchs: creation & apply
• Rebase tip: committer date
• More than hooks



Intro
• Revision of Git commands
• Git vs SVN



• Develop scheme

• Git branching model
• Git branch lifecycle



• Daily

• gitconfig
• gitignore

Inline extensions

• Branch naming
• Review changes (github)



29/03/2016

© 2016 Victor Arribas <[email protected]>

3

REVISION OF GIT COMMANDS

• https://training.github.com/kit/downloads/es/github-git-cheat-sheet.pdf

29/03/2016

© 2016 Victor Arribas <[email protected]>

4

GIT VS SVN

• Tésis simplificativa: todo lo que es dificil de hacer en SVN Git lo

hace fácil, y viceversa.

Acción

Descargar el repositorio

Tamaño del repo

Revisar los cambios y el historial

Commit

Push (only at git)

Ramas

Etiquetas

Archivos grandes

Varios proyectos en el mismo repo

Copia de seguridad

Git

Expensive

Compact

Trivial

Trivial

Conflicts

Trivial

SVN

Trivial

Exponential

Expensive

Conficts

= Commit

Expensive

Trivial (feature)

= Branch

Killer

Killer

Trivial

Linear

Easy

Moderate

29/03/2016

© 2015 Victor Arribas <[email protected]>

5

GIT AND BRANCHES

• En este punto podríamos pasarnos horas y exigiría

repasar todos los tipos de flujos de desarrollo. Tanto
los genéricos como los relativos a git.



• Todo lo anterior lo puedes encontrar bastante

condensado en estos dos recursos
• http://nvie.com/posts/a-successful-git-branching-model
• https://www.atlassian.com/git/tutorials/comparing-

workflows



29/03/2016

© 2015 Victor Arribas <[email protected]>

6

GIT AND BRANCHES

• En su lugar solo se pantea cuál es la configuración

canónica para Git.



29/03/2016

© 2015 Victor Arribas <[email protected]>

7

.GITCONFIG

• Uno de los archivos más importantes en el

ecosistema Git.
• Guarda tu identidad
• Guarda tus preferencias de git
• También actúa como .bashrc

• Permite inline extensions!



• Dos posibles localzaciones:

• $HOME/.gitconfig
• $repo/.git/config

29/03/2016

© 2015 Victor Arribas <[email protected]>

8

.GITCONFIG II

• He creado un instalador para simplificar mi vida cada vez que

cambio de máquina o contexto (chroot)
• https://github.com/varhub/my-gitconfig



• Hay algún voluntario?

29/03/2016

© 2015 Victor Arribas <[email protected]>

9

Live example

GITIGNORE

• Una de las partes más importantes que suele olvidarse
• Git almacena el historial completo de desarrollo para

siempre.
• Si uno añade un fichero incorrecto, este permanecerá ahñi para

siempre incluso tras borrarlo.

• Es la respuesta lógica a “por qué mi repositorio pesa tanto”?

• Recordar que el checkout puede duplicar el tamaño efectivo.


• Un gitignore adecuado debe ser una prioridad

• Hacerlo a posteriori puede ser doloroso

Herramienta de
simplificación:
git-ignore-add


Live example

29/03/2016

© 2015 Victor Arribas <[email protected]>

10

GITIGNORE II

• Qué debe estar dentro de un gitignore?
• Artefactos generados por el proyect (siempre)

• Lenguaje de programación

• Herramientas de compilación
• Datos sensibles descargados por otros medios



• IDE/editores (nunca excepto para proyectos expuestos al

público y/o a novatos)
• Estas reglas deberían trasladarse a un gitignore global
• Añádelas al projecto cuando no puedes asegugar el

conocimiento sobre Git de tu equipo de desarrollo.

• Siempre es mejor un .gitignore sucio que un repositorio sucio.

29/03/2016

© 2015 Victor Arribas <[email protected]>

11

INLINE EXTENSIONS

• Equivalente a los alias de bash y .profile/.bashrc



• Aquí tienes algunos ejemplos:

• https://github.com/varhub/my-gitconfig/blob/master/.gitconfig

• https://github.com/alikins/gitconfig/blob/master/gitconfig


• Demostraciones para esta charla:



treegraph

• Logmerges



• También existen las “external extensions” (avanzado)

• Cualquier ejecutable llamado git-<whatever> en el $PATH puede ser

invocado por git como:


git <whatever>

29/03/2016

© 2015 Victor Arribas <[email protected]>

12

Live example

REPOSITORIOS COMPLEJOS

• Hay básicamente 3 formas de manejar repositorios

complejos:
• Subtrees
• Subprojects/subrepos
• Submodules



29/03/2016

© 2015 Victor Arribas <[email protected]>

13

COMPLEX REPOS: SUBMODULES

• Submodules fue el primero en hacerse oficial.
• Requiere trabajo adicional en el clonado.
• Cada proyecto tiene su propio .git pero el repo raíz gobierna

al resto.

• Requiere actualización de versión continua.



• Encaja a la perfección con frameworks de composición:
• El framework es un proyecto que actúa como un concentrador
• La versión de cada subproyecto está siempre traqueada y firmada

•  versiones estables explícitas

• Los commits sobre el Framework son simplemente actualizaciones de

los componentes
•  actualización implícita del framework

29/03/2016

© 2015 Victor Arribas <[email protected]>

14

COMPLEX REPOS: SUBTREES

• Subtrees es la aproximación opuesta.
• Un único .git que condensa el árbol de desarrollo

de cada proyecto en un único y gigantesco árbol.

• El historial del proyecto puede ser compactado

(squash) o integrado en su totalidad.



• Es la mejor forma de desacoplar o extraer un

proyecto.
• See git subtree split

29/03/2016

© 2015 Victor Arribas <[email protected]>

15

COMPLEX REPOS: SUBPROJECTS

• Subprojects es la forma agnóstica de hacerlo (fuera de git).

• Se parece a los submódulos, pero el control es manual.


• Los proyectos son inconscientes del nexo de unión excepto

por dos hechos:
• Algunos proyectos van dentro de otros, y por tanto, dentro de su árbol

de ficheros y de git.

• Los proyectos anfitriones deben añadir entradas al gitignore para

mantener a los huéspedes (subprojects) fuera del control de
versiones.


• El flujo de trabajo es completamente aislado.
• Ejecutar git clean es extremadamente destructivo.



• Useful for framework customization and sandboxing

29/03/2016

© 2015 Victor Arribas <[email protected]>

16

POWERFUL EXAMPLES

• Gitignore automation

• https://github.com/varhub/my-gitconfig/blob/master/bin/git-ignore-add



• Merge without branches

• https://github.com/varhub/my-gitconfig/blob/master/bin/git-lazy-merge



• Remove untracked files

• http://stackoverflow.com/questions/61212/how-do-i-remove-local-untracked-files-from-my-current-

git-branch


• Remove big/sensitive files

• https://help.github.com/articles/removing-files-from-a-repository-s-history



• Patchs: creation & apply

• https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/



• Rebase tip: committer date

• http://stackoverflow.com/questions/2973996/git-rebase-without-changing-commit-timestamps



• More than hooks

• http://stackoverflow.com/questions/2293383/hide-a-string-in-a-file-before-git-commit/2294246

29/03/2016

© 2015 Victor Arribas <[email protected]>

17

¿PREGUNTAS?

Gracias por su atención



Alguna pregunta?

29/03/2016

© 2015 Victor Arribas <[email protected]>

18
  • Links de descarga
http://lwp-l.com/pdf15612

Comentarios de: Git: Una introducción avanzada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad