Control de versiones (GIT & GITLAB)

Clase 1

Profesor Miguel Cantillana

INSP019 – Desarrollo Web
Ingeniería en Computación e Informática
Semestre 2019-1

Temario

  • Qué es el versionamiento
  • Programas para control de versiones
  • GIT
    • file, staging, commited
    • .gitignore
    • Branch & Merge
  • Gestores de repositorios para GIT
  • Gitlab
    • push, pull, fetch, clone, remote.

Pero antes...

Uso de la terminal

Consola de comandos

Conceptos

  • Shell
  • Path
  • Flags
  • Ssh
  • Vim/Nano
  • Sudo/Su
  • root

Árbol de directorios

Comandos de propósito general

$ pwd = imprimir la carpeta en la que estoy.
$ ls = listar el contenido de la carpeta, se pueden pasar argumentos como -a, -l ó -la.
$ cd /ruta/a/la/carpeta/ejemplo = nos mueve a la carpeta ‘ejemplo’.
$ cd .. = retrocedemos un paso en la ruta que nos encontramos.
$ mkdir = crea una carpeta.
$ touch = crea un archivo.

Interactuar con archivos

$ cat = muestra el archivo
$ head = muestra sólo el principio del archivo
$ tail = muestra el final del archivo
$ cd .. = retrocedemos un paso en la ruta que nos encontramos.
$ touch = crea un archivo.
$ nano | vim = abre el archivo.
$ rm = borra el archivo

Interactuar con directorios

$ mkdir = crea una carpeta
$ rm -r = borra recursivamente una carpeta con todo lo que hay dentro
$ mv nombre_archivo nombre_archivo_2 = cambia de nombre un archivo
$ mv nombre_archivo nombre_carpeta = mueve un archivo o carpeta dentro de otra carpeta

Path

  • Path Absoluto: Es la ubicación de un archivo o carpeta exacta dentro de un sistema de archivos
  • Path Relativo: Es la ubicación de un archivo o carpeta relativo al lugar de origien de la búsqueda

Path

Path absoluta en la web

Path relativa en la web

Programas para control de versiones

Centralizado vs Distribuido

¿Qué es el versionamiento?

SCM

Source Code

Management

Nos permite registrar los cambios realizados a nuestros archivos de texto

Nos permite acceder a cada registro histórico para gestionarlo, compartirlo, administrarlo, editarlo, etc.

Nos permite desplazarnos en la historia registrada

GIT

Instalación

Windows

  1. Entras a http://git-scm.com/download/win
  2. Descargas el instalador
  3. Seguir los pasos del wizar

Linux

apt-get install git

Mac

brew install git

Working, staging & repository

Comandos básicos

git init
git status
git add
git commit 
git rm
git diff
git checkout

Actividad Individual

Actividad 1

  • Crear un repositorio con el nombre curso_desarrollo_web
  • Crear dos archivos de texto con el nombre archivo1.txt y archivo2.txt
  • Agregar 2 párrafos de contenido a cada archivo (ej. utilizar lorem)
  • Agregar los archivos a nuestro proyecto git
  • Registras los cambios en git
  • Agregar una carpeta a nuestro proyecto con el nombre datos
  • Agregar un archivo llamado archivo3.txt a la carpeta creada
  • Agregar el archivo anterior a nuestro proyecto git
  • Registrar los cambios en git
  • Agregar un 3 párrafo al archivo1.txt creado
  • Comparar las diferencias entre lo registrado y lo que se va a registrar
  • Registrar los cambios de archivo1.txt a git
  • Eliminar archivo2.txt del repositorio

.gitignore

  1. Creamos un archivo .gitignore en la raiz de nuestro proyecto
  2. Agregamos los archivos o comodines a ignorar por GIT
  3. Agregamos .gitignore a nuestro repositorio

Ejemplo

Links

  • http://git-scm.com/docs/gitignore
  • https://github.com/github/gitignore
*.log
.htaccess
sitemap.xml
sitemap.xml.gz
wp-config.php
wp-content/advanced-cache.php
wp-content/backup-db/
wp-content/backups/
wp-content/blogs.dir/
wp-content/cache/
wp-content/upgrade/
wp-content/uploads/
wp-content/wp-cache-config.php
wp-content/plugins/hello.php

/readme.html
/license.txt

Actividad 2

  • Utilizando el mismo repositorio anterior:
    • Agregar archivo config
    • Agregar un párrafo al archivo config 
    • Excluir archivo config de nuestro repositorio

Branch & Merge

Branch

La principal función de una rama en git es la organización de nuestro trabajo, es decir:

  • Útil para desarrollar una nueva funcionalidad o característica sin afectar nuestro desarrollo principal

  • Para construir flujos de trabajo en proyectos en productivo con contantes cambios (hotfixed, QA, testing)

  • Para gestionar gestionar los release o entregables de un proyecto

    Permite crear 
$ git branch nuevo-branch
$ git checkout nuevo branch
$ git checkout -b nuevo-branch
$ git branch
$ git branch -a

git merge

git merge

Actividad 3

  • Crear la rama dev 
  • Cambiar a rama dev y crear archivo file4.txt
  • Cambiar contenido en file3.txt (puedes agregar o eliminar contenido)
  • Mezclar cambios de la rama dev a master con no fast forward

Gestores de repositorios para GIT

Primeros pasos

  1. Ingresar a https://gitlab.com 
  2. Crear una cuenta con su email
  3. Configurar llaves

Linux/Mac

Windows

## Paso 1 // generamos nuestra llave
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

## Paso 2 // respondemos con enter  a la pregunta
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

## Paso 3 // puedes agregar una frase al proceso
# de generación de llave, lo dejaremos en blanco
Enter passphrase (empty for no passphrase): [Type a passphrase]
# Enter same passphrase again: [Type passphrase again]

Gitlab

  • Pull, push, clone, forked, remote

Actividad 4 

  • Crear un repositorio en gitlab.com
  • Conectar repositorio de actividad anterior con gitlab
  • Desde la rama master
  • Crear 3 archivos con 2 párrafos cada uno
  • Crear una carpeta y un archivo dentro de ella con el nombre de mistico.txt
  • Subir los cambios a gitlab

Actividad 5 

Clone el siguiente repositorio git@gitlab.com:topicos2-2019/nrc-8319-2019.git y realice las siguientes acciones:

  • Crear una rama con su rut sin puntos y guiones
  • Agregue un archivo de texto con extensión .md, donde el nombre del archivo debe ser el rut sin puntos y dígito verificador
  • Dentro del archivo agregar un título y dos parrafos (puede utilizar texto de ejemplos como lorem impsum)
  • Tachar el nombre desde readme.md agregando los tag <s> y </s> (Ej. <s>Nombre Apellido</s>)
  • Registrar los cambios con git
  • Enviar la rama con el nuevo cambio a gitlab (debe hacer un merge request)

Créditos

Made with Slides.com