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
- Entras a http://git-scm.com/download/win
- Descargas el instalador
- 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
- Creamos un archivo .gitignore en la raiz de nuestro proyecto
- Agregamos los archivos o comodines a ignorar por GIT
- 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
- Ingresar a https://gitlab.com
- Crear una cuenta con su email
- 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
UNAB: DW01 / Control de versiones a través de git y github
By Miguel Cantillana
UNAB: DW01 / Control de versiones a través de git y github
Clase 1
- 968