Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf ·...

44
Control de Versi ´ ons empregando Git Curso de introduci ´ on a Git e GitLab Marcos Horro James L´ opez 30 Maio 2019

Transcript of Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf ·...

Page 1: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Control de Versions empregando GitCurso de introducion a Git e GitLab

Marcos HorroJames Lopez

30 Maio 2019

Page 2: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Quen son?

Marcos Horro, contratado predoutoral (FPU) no Grupode Arquitectura de Computadores (GAC) da UDC

gac.udc.es/˜[email protected]/markoshorro@markoshorro

[ Laboratorio de investigacion 0.2 na FIC ]

Page 3: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

1 Introducion

2 Arquitectura git

3 Comandos basicos (CLI)

4 Branching

5 Fluxos de traballo

6 Conclusions

7 GitLab

8 Posta en practica!

Page 4: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Motivacion

usr@laptop:~/project % ls -l

total 32

drwxrwxr-x user 4096 Dec 24 codigoFinal

drwxrwxr-x user 4096 Dec 24 codigoFinalEsteSi

drwxrwxr-x user 4096 Dec 24 codigoFinalEsteSi2

drwxrwxr-x user 4096 Dec 24 codigoFinalEsteSi8

drwxrwxr-x user 4096 Dec 24 codigoV1

drwxrwxr-x user 4096 Dec 24 codigoV1.0.1

drwxrwxr-x user 4096 Dec 24 codigoV1.1

drwxrwxr-x user 4096 Dec 24 codigoV1.9

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 4/44

Page 5: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Motivacion

usr@laptop:~/Dropbox/project % ls -l

total 32

drwxrwxr-x user 4096 Dec 24 codigoFinal \

(copia en conflicto)

drwxrwxr-x user 4096 Dec 24 codigoFinalEsteSi \

(copia en conflicto)

drwxrwxr-x user 4096 Dec 24 codigoFinalEsteSi2

drwxrwxr-x user 4096 Dec 24 codigoFinalEsteSi8

drwxrwxr-x user 4096 Dec 24 codigoV1

drwxrwxr-x user 4096 Dec 24 codigoV1.0.1 \

(copia en conflicto)

drwxrwxr-x user 4096 Dec 24 codigoV1.1

drwxrwxr-x user 4096 Dec 24 codigoV1.9

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 5/44

Page 6: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Motivacion

usr@laptop:~/project % ls -l

total 0

(Alguen borrou todo...)

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 6/44

Page 7: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Motivacion

Cando desenvolvemos un proxecto (tanto codigo comooutro tipo de ficheiros) precisamos de ferramentas quenos axuden a:

Levar conta dos cambios (ter revisions)Manter copias de seguranzaDesenvolver codigo empregando metodoloxıas axiles(scrum, DevOps, XP, etc.)Desenvolvemento colaborativo: entre duas ou maispersoas ou organizacions

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 7/44

Page 8: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Motivacion

DefinicionUn sistema de control de versions (CVS) automatiza astarefas de xestion, control e empaquetado dos cambiossobre un produto ou configuracion

Existen diferentes implementacions (de codigo aberto):GitMercurial (hg)Subversion (svn)...

Como en case todo o software tamen hai solucionsprivativas.

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 8/44

Page 9: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Motivacion: por que Git?

Algunhas razons para empregar Git:Codigo aberto; proxecto moi maduro en continuodesenvolvemento e ademais totalmente gratuıtoEmpregado polos desenvolvedores do kernel LinuxOs repositorios mais grandes de proxectos de codigoaberto: GitLab, GitHub, Bitbucket, etc.Grandes organizacions que apoian esta ferramenta edan soporte, como a Software Freedom ConservancyDentro da complexidade dos sistemas de control deversions, e o mais doado a nivel de traballar con ramase fusionado

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 9/44

Page 10: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Orixe de Git

Desenvolvido no 2005 por Linus Torvalds. Buscaba unhaferramenta para xestionar, precisamente, o codigo dokernel Linux que:

Fose distribuida como BitKeeper, un dos “pais” de Git.Sen embargo, esta ferramenta carecıa dunhafuncionalidade importante que hoxe e o ındice en GitFose escalable, dado que o kernel tina por aquel entonmais de 17.000 ficheiros. Ferramentas como Monotonetampouco cumplıan esta condicion, aında que destasacou o uso do SHA1 para identificar todos os obxectosen Git

Hoxe en dıa o proxecto e mantido, principalmente, porLinus, Junio Hamano e a Software Freedom Conservancy.Git en ingles significa “persoa pouco desexable”

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 10/44

Page 11: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

IntroducionMotivacion

Obxectivos

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Obxectivos principais

Os temas que vai cubrir este curso de iniciacion:Arquitectura git: fundamentos basicosComandos basicos (CLI): primeiros pasosComentar o branching model de GitFluxo de traballo en Git (en profundidade na seguintesesion)Ver a plataforma de GitLabPosta en practica coa plataforma GitLab

Dado que non hai unha version oficial de git en galego1,os termos tecnicos empregados neste curso seran os daversion canonica (ingles)

1Os colaboradores do proxecto TRASGO contemplaron nalgunmomento a traducion pero polo momento non existe un consenso

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 11/44

Page 12: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Arquitectura git (i)

Os repositorios en git non son mais que BBDD quemantenen a historia, e dicir, os cambios e a evolucion doproxecto en cuestionO seguimento dos recursos non se limita so a codigo, senon a calquera tipo de ficheiro/directorio que queiramosrexistrarO funcionamento de git basease en duas estruturasfundamentais: o almacen de obxectos e o ındice

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 12/44

Page 13: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Arquitectura git: obxectos (ii)

En git hai catro tipo de obxectos:1 blobs (binary large object): conten os datos nunha

revision dos ficheiros; non conten metadatos2 trees: conten informacion sobre a xerarquıa de

directorios no proxecto3 commits: conten os metadatos de cada unha das

revisions (cada commit e unha revision)4 tags: identifica aos commits cun nome human-readable,

dado que o identificador real de cada commit obtenseaplicando unha funcion hash SHA-1

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 13/44

Page 14: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Arquitectura git: ındice (iii)

DefinicionO ındice en git e un binario representa o estado actual dorepositorio: a version actual, os cambios introducidospara unha revision, etc. Tamen se denomina staging area

Sobre este ındice indicarase os cambios que se querenrexistrar (git add), descartar (git reset), deixar paradespois (git stash), eliminar (git rm), etc.

EstructuraA historia en Git forma un grafo dirixido acıclico.

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 14/44

Page 15: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Arquitectura git: localizacions en git (iv)

Subindo no nivel de abstraccion de git, os obxectosdistribuense nas seguintes localizacions: o directorio detraballo, a staging area/ındice e o repositorio

Directorio Stage area Respositorio(local)

Respositorio(remoto)

.git

Área de traballo local

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 15/44

Page 16: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Arquitectura git: directorio .git (v)

O directorio .git conten a informacion antes mencionada,e dicir, conten tanto a staging area como o repositorio.Neste directorio tamen podemos atopar:

Hooks: scripts que se lanzan para realizardeterminadas tarefas, e.g. correxir o formato (e.g.clang-format) dun ficheiro antes de facer un push aorepositorio remotoAxustes de configuracion: informacion do usuario,repositorios remotos, alias, etc.Ramas: preferencias sobre as ramas que manexa orepositorio

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 16/44

Page 17: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Arquitectura git (vi)

Initialcommit

tree

blob blob

v1

masterroot/        .git/        directorio/                 ficheiro1                 ficheiro2

ficheiro1 ficheiro2

directorio

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 17/44

Page 18: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Arquitectura git (e vii)

Initialcommit

Secondcommit

tree

blob blob

v1 master

tree

tree

blob

root/        .git/        directorio/                 ficheiro1                 ficheiro2                 directorio2/                        ficheiro3

ficheiro1 ficheiro2

directorio

ficheiro3

directorio2

directorio

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 18/44

Page 19: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura gitObxectos e ındice

Localizacions en git

Directorio .git

.gitignore

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

.gitignore

Neste ficheiro especifıcanse de forma intencionada osficheieros a ignorar por git. Por exemplo:

/build

*.pyc

Ignora o directorio /build/ e os ficheiros que terminen en.pyc

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 19/44

Page 20: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Comandos basicos (CLI)

Os desenvolvedores de Git diferencian dous tipos decomandos:

Porcelain: comandos de alto nivel, os empregados anivel usuario para as “tarefas diarias”Plumbing: comandos de baixo nivel, mais enfocados aodesenvolvemento e a tarefas mais concretas

Nesta sesion de introducion centraremonos na interfacede alto nivel, e en concreto contemplaremos comandosde:

Creacion, configuracion e estado: init, clone, config,remote, status, diff, logCambios en local: add, rm, reset, checkout, tag, stashCambios en remoto: push, pull, fetch

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 20/44

Page 21: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Creacion repositorio (i)

Para traballar cun repositorio git podemos clonar un xaexistente empregando git clone <url>

[<directorio>], ou ben iniciar nun directorio un novorepositorio con git init

git init – inicializa un repositorio Git nun directorio(por defecto o actual)git clone <repository> [<directory>] – fai unhacopia dun repositorio nun directorio

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 21/44

Page 22: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Creacion repositorio: inicializacion (ii)

Se queremos inicializar un novo repositorio nun directorioxa creado, e vinculalo cun repositorio remoto soloterıamos que facer:

cd path/to/directory

# inicializacion do repositorio local

git init

# engadindo a direccion do repositorio remoto

git remote add origin <url>

# faltarıa a configuracion (falaremos despois)

...

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 22/44

Page 23: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Creacion repositorio: clonar (e iii)

Se queremos traballar cun repositorio xa existente,teremos que clonalo, como acabamos de ver, e.g:

cd path/to/directory

# clonamos o repositorio remoto

git clone <url>

# podemos configurar parametros, etc.

...

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 23/44

Page 24: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Configuracion dun repositorio

Os comandos mais empregados para a configuracionbasica do repositorio son:git config <option> – obter e fixar opcions dorepositoriogit remote – administrar o conxunto de repositoriostrackeados

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 24/44

Page 25: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Estado do repositorio

git diff <file> – mostrar cambios entre commits, uncommit e o directorio de traballo, etc.git status – mostra as diferencias entre o ındice, odirectorio de traballo, o repositorio remoto e os ficheirossen trackeargit log <options> – mostra os logs dos commits

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 25/44

Page 26: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Comandos basicos (CLI): cambios en local (i)

git add <file> – engadir ficheiros ao ındicegit rm <file> – eliminar ficheiros do directorio detraballo e do ındicegit checkout HEAD -- <file> – restaurar ficheiros nodirectorio de traballo. Tamen empregase para cambiarde ramasgit commit -m ‘‘message’’ – gardar os cambios norepositorio cunha mensaxegit stash [pop|drop] – ‘esconder’ os cambios dodirectorio de traballo, ponelos en stand-by. Ca opcionpop recuperanse e con drop descartanse

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 26/44

Page 27: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Comandos basicos (CLI): cambios en local (eii)

git tag [-a|-d] [name] [commit] – ‘marcar’ uncommit para identificalo de forma human-readable.Serve para indicar puntos de revision ou versiongit reset – cambiar o HEAD polo estado especificadogit revert [commit] – crea un novo commit cunhainversion dos cambios con respecto ao commitespecificado

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 27/44

Page 28: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Comandos basicos (CLI): cambios en remoto

git fetch – recuperar os cambios do repositorio erama especificadagit pull – facer o fetch e integralo co repositorio erama especificadagit push – actualizar o repositorio especificado

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 28/44

Page 29: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)Creacion, configuracion eestado do repositorio

Cambios en local

Cambios en remoto

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Vista global

Directorio detraballo Index/Staging area Repositorio

Remote repo(origin)

Remote repo(another)

STASH AREA

git add/rm

git reset HEAD

git fetchgit pullgit commit

git push another

git pushgit stashgit stash

pop

LOCAL REMOTO

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 29/44

Page 30: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Branching model (i)

Gran potencia de Git reside nunha funcionalidade: asramas (branches).

Permiten fıos independentes de desenvolvemento:multiples versions simultaneasOptimiza o traballo colaborativo: desenvolvemento enparaleloMellor reparticion de tarefas: desenvolvemento maisaxil

Require conecer as tecnicas de fusionado (git merge,git rebase) e control (git branch, git checkout) deramas

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 30/44

Page 31: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Branching model (e ii)

A B

C

E

v1.0 v2.0

master

feature

git merge

git branch feature

git checkout feature

D

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 31/44

Page 32: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Fluxos de Traballo (i)

Centralized workflow : sen ramas, todos traballandocontra o mesmo repositorio remotoFeature workflow : traballo feito nas ramas; unicorepositorio remotoForking workflow : un fork e unha copia dun repositorioremoto noutro repositorio remoto; neste paradigma cadacontribuidor ten dous repositorios remotos (necesidadede sincronizalos)Gitflow workflow : mesma filosofıa que feature workflow,pero asignando roles especıficos as ramas, e.g. master,develop, release, feature e hotfix

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 32/44

Page 33: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Gitflow workflow

Extraıdo de A successful Git branching model(https://nvie.com/posts/a-successful-git-branching-model).

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 33/44

Page 34: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Resumo (i)

Precisamos de ferramentas que axuden aautomatizar tarefas de xestion os nosos proxectosGit e a alternativa mais empregada hoxe en dıa decodigo aberto e gratuıtaEsta ferramenta basease nos obxectos e no ındice. Osobxectos son: blobs, commits, trees e tagsAs localizacions en Git axudan a diferenciar os estadosdos diferentes cambios: sen rexistrar (directorio local),rexistrados (staging area/index), revisados (committed)e publicados (remote repository )

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 34/44

Page 35: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Resumo (e ii)

Git CLI posue dous tipos de comandos: alto(porcelain) e baixo (plumbing) nivelNeste curso conecimos os comandos para a creacion,configuracion, visualizacion do estado e xestion decambios en local e remotoA potencia de Git reside no traballo con ramas(branching model)

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 35/44

Page 36: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Sempre en caso de dubida...

man gitman git <command>

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 36/44

Page 37: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

GitLab

James Lopez, Engineering Manager (EM) en GitLabdende fai 3.5 anos, onde traballa con mas de 640personas de 55 paıses

jameslopez.net/gitlab.com/jameslopez@[email protected]

Page 38: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

GitLab: valores

ColaboracionTraballo asıncrono 100% remotoGitLab para construir GitLab: sempre hai algunha tarefa ou mergerequest

Resultados: conta o traballo realizado, non as horas traballadas

Eficiencia: a complexidade demora o tempo do ciclo, ganan as solucionsaburridas

DiversidadeRemote-only tende a diversidade global, pero hai outras formulasEmprega aqueles que engaden a cultura, non aqueles que se adecuan aela (non culture-fit). Queremos diversidade cultural, no canto deconformidade cultural

Iteracion: cambio mınimo viable (MVC); se o cambio e mellor que o queexiste ata agora, lanzao

Transparencia: todo en GitLab e publico por defecto, tanto a estratexia,goals trimestrais, manual da companıa, administracion de tarefas, etc.

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 38/44

Page 39: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

GitLab: creacion proxecto

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 39/44

Page 40: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

GitLab: estructura do proxecto

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 40/44

Page 41: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

GitLab: crear un fork

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 41/44

Page 42: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Practica con GitLab (20 min)

1 Crea un repositorio baleiro na paxina de GitLab e clonao na tuamaquina

2 Configura os parametros basicos no repositorio: nome de usuario eenderezo electronico. Crea tamen un .gitignore co patron *.tmp

3 Engade un ficheiro file1.txt e outro file.tmp e crea a primeirarevision co tag “v0.1”. Sincroniza os cambios co teu repositorioremoto

4 Engade un novo directorio que conten os ficheiros file2.txt efile3.txt, e engandeos a staging area/ındice. Unha vez engadidos,descarta o ficheiro file3.txt da staging area e fai commit

5 Modifica file1.txt engadindo a cadea “to discard”, e fai commit

6 Desfai o ultimo commit (git reset –soft HEAD˜1) e sincroniza orepositorio co remoto. Comproba que o file1.txt esta baleiro enGitLab, pero non no directorio de traballo

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 42/44

Page 43: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Introducion

Arquitectura git

Comandosbasicos (CLI)

Branching

Fluxos detraballo

Conclusions

GitLab

Posta enpractica!

Referencias

Referencias e ligazons de interese

Control Version using Git (Coursera). https://www.coursera.org/learn/version-control-with-git

Version Control with Git: Powerful Tools and Techniquesfor Collaborative Software Development. 2009. JonLoeliger.Git Workflows - Atlassian. https://www.atlassian.com/git/tutorials/comparing-workflows

Git user-manual.https://git-scm.com/docs/user-manual.html

GitLab cheat sheet. https://about.gitlab.com/images/press/git-cheat-sheet.pdf

“Orixe de Git”.https://marc.info/?l=git&m=114685143200012

Horro, M. Curso de introducion a Git e GitLab 30 Maio 2019 43/44

Page 44: Control de Versions empregando Git´gac.udc.es/~marcos.horro/public_files/Git__curso_intro.pdf · Grandes organizacions que apoian esta ferramenta e´ dan soporte, como a Software

Control de Versions empregando GitCurso de introducion a Git e GitLab

Marcos HorroJames Lopez

30 Maio 2019