git git-flow - · PDF fileRefresco conceptos Git Git-flow Introdución Fluxos de...

Post on 10-Feb-2018

329 views 12 download

Transcript of git git-flow - · PDF fileRefresco conceptos Git Git-flow Introdución Fluxos de...

gitgit-flow

jesus@jesusamieiro.com

● Refresco conceptos Git● Git-flow

● Introdución● Fluxos de traballo● Comandos de git-flow

● Eclipse

Contido

git

Distribuído

Equipo 1

V 1

V 2

V 3

Equipo 2

V 1

V 2

V 3

Equipo 3

V 1

V 2

V 3

Servidor

V 1

V 2

V 3

CommitVer recomendacións estilo

SHA-1

Commit 160 bitsFunciónSHA-1

HEAD75528b9

Commit 1

75528b9

Commit 1

8daf16a

Commit 2

75528b9

Commit 1

8daf16a

Commit 2

a346348

Commit 3

Zonas en GitDirectoriode trabajo

Zona de preparación Repositorio

Preparar archivos

Commit

Checkout

Estados e fluxo

Ignorado

Con seguimientoSin

seguimientoSin

modificación Modificado

Añadir archivo

Edición

Commit

Preparado

Eliminar archivo

Ramas

75528b9

Commit 1

8daf16a

Commit 2

de396a3

Commit 5

a3ae45c

Commit 3

456af81

Commit 4

pruebas

master

HEAD

TagsVer recomendacións estilo

ResetSoft, mixed, hard

Repositorios remotos

●git remote●git push●git fetch●git pull

Repositorios remotos

git-flow

● master ● develop

● Permanentes

Ramas principais

● Feature● Release● Hotfix

● Propósito determinado● Conxunto de regras de uso● Tempo de vida limitado● Ramas normais

Ramas de soporte

● Créanse a partir de develop● Fusiónanse en develop● Nome: calquera, excepto:

● master ● develop ● release-* ● hotfix-*

● Obxectivo: novas funcionalidades

Ramas feature (topic)

● Créanse a partir de develop● Fusiónanse en master e en develop● Nome: release-* ● Obxectivo: preparación dunha nova publicación

(release)

Ramas release

● Créanse a partir de master● Fusiónanse en master e en develop● Nome: hotfix-* ● Obxectivo: resolución de errores en produción

Ramas hotfix

$ git flow init --help

$ git clone https://github.com/jquery/jquery.git

$ git flow init

git flow init

$ git flow feature help

$ git flow feature list

$ git flow feature start nomeFeature

$ git flow feature finish nomeFeature

Funcionalidades similares con “release” e “hotfix”

git flow feature

Eclipse Neon

git-flow

Exercicio 1

Por parellas: usuario1 (U1) e usuario2 (U2)

U1, U2: Configurar Eclipse

U1: Inicializar un repositorio

U1: Crear o arquivo .gitignore

U1: Realizar o commit deste arquivo

U1: Crear unha rama “develop” e cambiarse a ela

U1: Engadir un arquivo index.php

U1: Realizar o commit

Exercicio 1

U1: Engadir un arquivo style.css

U1: Realizar o commit

U1: Fusionar os cambios da rama “develop” na rama “master”

U1: Configurar o remote

U1: Facer push das 2 ramas

U2: Clonar o proxecto

U2: Engadir unha liña no index.php na rama master

Exercicio 1(II)

U2: Engadir unha liña no style.css na rama develop

U2: Fusionar os cambios na rama master

U2: Facer o push das dúas ramas

U1: Facer o pull das dúas ramas

U1: Facer un ‘reset hard’ na rama master ao commit nº 3, “Engado o arquivo style.css”

U1: Facer o push forzado

U2: Facer o pull e ver o resultado

Exercicio 1(III)

Exercicio 2

Por parellas: usuario1 (U1) e usuario2 (U2).

U1: Crear un proxecto en Eclipse con git-flow.

U1: Crear unha feature denominada “gitignore”.

U1: Crear o arquivo “.gitignore”, excluíndo do seguimento os arquivos de “build, project e settings”.

U1: Facer o commit e finalizar a feature “gitignore”.

U1: Publicar as ramas “master” e “develop”.

U1: Crear unha feature denominada “licencia”.

U1: Crear o arquivo coa licencia MIT: license.txt

Exercicio 2 (I)

U2: Clonar o proxecto e inicializalo con git-flow.

U2: Crear unha feature denominada “Sass”.

U2: Crear o arquivo con contido “sass/main.scss”.

U2: Realizar o commit.

U2: Crear o arquivo con contido “sass/header.scss”.

U2: Realizar o commit.

U2: Crear o arquivo con contido “sass/footer.scss”.

U2: Realizar o commit.

Exercicio 2 (II)

U2: Crear o arquivo con contido “sass/sidebar.scss”.

U2: Realizar o commit.

U2: Crear o arquivo con contido “sass/main.scss”.

U2: Realizar o commit.

U2: Crear unha feature denominada “readme”.

U2: Crear o arquivo con contido: readme.md

U2: Realizar o commit.

U1: Facer o commit e finalizar a feature “licencia”.

Exercicio 2 (III)

U1: Publicar a rama “develop”.

U2: Levar os cambios de “develop” á feature “Sass”.

U2: Finalizar as features “Sass” e “readme”.

U2: Publicar a rama “develop”.

U1: Crear a release 0.1.0, cun arquivo “version.txt” onde se indique a versión e publicala.

U1: resolver un erro coa licencia en produción, que tiña que ser GPL v2 en vez de MIT. Indicalo no arquivo readme.md. Publicar o bugfix co número de versión adecuado.

Exercicio 2 (IV)

Onde continuar?Libro “Pro Git” https://progit.org

Libro “Version Control with Git” de O'Really

http://wiki.eclipse.org/EGit/User_Guide

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

https://github.com/petervanderdoes/gitflow-avh/wiki

https://yakiloo.com/getting-started-git-flow/

www.jesusamieiro.com