Git, GitHub y Markdown

Adolfo Sanz De Diego

Noviembre 2016

1 Acerca de

1.1 Autor

1.2 Licencia

1.3 Fuente

2 Introducción

2.1 Enlaces imprescindibles

2.2 Otros enlaces de interés

3 Uso básico de Git

3.1 Sistema Control de Versiones

"Sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante."

3.2 VCS Locales

  • Lo más simple: hacer copias de directorios.

  • Aparecieron BD en local que guardan el registro de los cambios realizados a los archivos.

3.3 VCS Centralizados

  • Un servidor central que guarda los cambios.
VCS Centralizado
VCS Centralizado

3.4 Pros y Contras VCS Centralizados

  • Pros: más colaborativo que el local.

  • Contras: dependes de un servidor central.

3.5 VCS Distribuidos

  • Cada cliente no solo descarga la última copia, sino todo el repositorio.
VCS Distribuido
VCS Distribuido

3.6 Ventajes VCS Distribuidos

  • Puedes seguir trabajando aunque el repositorio remoto esté caido.
    • más autonomía
  • La información está más replicada.
    • menos vulnerable
  • Permite pruebas en local y subir solo lo relevante.
    • más limpieza

3.7 Características de Git

  • Creado por Linux Torvalds, líder del equipo del kernel Linux.

  • Objetivos cuando se creó:
    • Rápido
    • Sencillo
    • Multi rama
    • Distribuido
    • Grandes proyectos

3.8 Instalación

3.9 Configuración inicial

git config --global user.name "Nombre que quieras mostrar"
git config --global user.email "correo@electronico.es"

3.10 GUIs

3.11 Iinicializar un reposiorio

  • Crea el subdirectorio .git con archivos de git para gestionar el repositorio.
git init

3.12 El área de staging

Staging Area
Staging Area

3.13 Ver el estado de los archivos

  • Importante saber el estado de los archivos.
git status

3.14 Ver las diferencias

  • Podemos ver las diferencias entre el área de staging y el área de trabajo.
git diff

3.15 Añadir archivos

  • Podemos añadir los cambios de un fichero (o varios) al área de staging (desde el área de trabajo).
git add nombre-del-fichero
git add *.extension
git add -A

3.16 Grabar los cambios

  • Para grabar los cambios realizados al repositorio (desde el área de staging).
git commit -m "mensaje corto descriptivo con los cambios"

3.17 Deshacer los cambios

  • Para deshacer los cambios de un fichero (o varios) al area de staging (desde el repositorio).
git checkout nombre-del-fichero

3.18 Listado de cambios

  • Para ver el listado de cambios realizados en el repositorio.
git log

3.19 Alias

  • Podemos crear alias.
git config --global alias.list 'log --oneline --decorate --graph --all'

3.20 Ignorar archivos

  • Podemos ignorar archivos añadiendolos al fichero .gitignore.

3.21 Creando etiquetas

  • Existen etiquetas ligeras, y etiquetas anotadas (iguales pero estas con más información)
git tag nombre-etiqueta-lijera
git tag -a nombre-etiqueta-anotada -m "mensaje que acompaña a la etiqueta"

3.22 Etiquetas tardías

  • Se puede crear una etiqueta conociendo el hash del commit (verlo con git log).
git tag -a nombre-etiqueta-anotada -m "mensaje que acompaña a la etiqueta" hash-del-commit

3.23 Ver una etiqueta

  • Podemos ver información concreta de una etiqueta.
git show nombre-etiqueta

3.24 Sacar una etiqueta

  • No podemos sacar una etiqueta, pero podemos colocar en nuestro directorio de trabajo una versión que coincida con alguna etiqueta, creando una rama nueva:
git checkout -b nombre-rama nombre-etiqueta

4 Uso básico de GitHub

4.1 Características de GitHub

  • Plataforma de desarrollo colaborativo, que utiliza Git.

  • Los repositorios son públicos, salvo con cuenta de pago.

  • Tiene facetas de red social (perfil público, seguidores, estrellas, etc.)

  • Nos permite gestionar organizaciones y equipos.

  • Gestión de proyectos (wiki, releases, incidencias, gráficos, etc.)

  • Servidor web.

4.2 Crear cuenta

Crear cuenta en GitHub
Crear cuenta en GitHub

4.3 Crear repositorio

Crear un repositorio
Crear un repositorio

4.4 Cambiar avatar

  • View profile and more > Settings > Profile
Cambiar avatar en GitHub
Cambiar avatar en GitHub

4.5 Doble factor de autentificación

  • View profile and more > Settings > Security
Activr el doble factor de autentificación en GitHub
Activr el doble factor de autentificación en GitHub

4.6 Uso social

  • Características sociales:
    • Seguir a gente.
    • Seguir proyectos (watch).
    • Premiar proyectos (start).
    • Forquear proyectos (fork).
    • Crear organizaciones.

5 Uso avanzado de Git

5.1 Conectar un repositorio remoto

  • Podemos conectar uno o varios reposiorios remotos a nuestro repositorio.
git remote add alias-repositorio-remoto url-repositorio-remoto

5.2 Descargar y combinar

  • Podemos descargar y combinar los cambios remotos con los de tu repositorio local.
git pull alias-repositorio-remoto nombre-rama-repositorio-remoto

5.3 Enviar datos

  • Podemos enviar datos al reposiorio remoto (solo si está up-to-date).
git push alias-repositorio-remoto nombre-rama-repositorio-remoto

5.4 Repos y ramas

  • Normalmente:
git pull/push origin master

5.5 Clonar repositorios

  • Clonar es como:
    • hacer un init
    • luego un remote add
    • luego un pull origin master
    • dejando las ramas remota y local en master
git clone url-repositorio-remoto

5.6 Resumen áreas

Resumen áreas GIT
Resumen áreas GIT

5.7 Crear una rama

  • Podemos crear ramas que son apuntadores que podemos mover por los distintos snapshots.

  • Solo la creamos, no nos situamos en ella.

git branch nombre-rama

5.8 Cambiar de rama

  • El HEAD es el apuntador que usa GIT para saber en que rama estás.

  • Cuando cambiamos de rama GIT cambia el HEAD y los ficheros de tu área de trabajo.

git checkout nombre-rama

5.9 Crear y cambiar de rama

  • Podemos crear y cambiar de rama con un mismo comando.
git checkout -b nombre-rama

5.10 Ver las ramas y el HEAD

  • Podemos ver las ramas y donde apunta el HEAD.
git log --oneline --decorate --graph --all
git branch -v

5.11 Fusionar ramas

  • GIT es muy potente con la fusión de ramas.
git merge nombre-rama

5.12 Solucionar conflictos

  • Si al hacer un merge existan conflictos GIT los apunta en los propios ficheros.
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">please contact us at support@github.com</div>
>>>>>>> issue:index.html

5.13 Borrar ramas

  • Una vez fusionado la rama en el master, conviene borrarla (solo nos deja si está fusionada).
git branch -d nombre-rama

6 Uso avanzado de GitHub

6.1 Añadir colaboradores

  • Podemos dar permisos de push a quien queramos.
GitHub New Collaborator
GitHub New Collaborator

6.2 Crear organizaciones

  • Podemos crear organizaciones.
GitHub New Organization
GitHub New Organization

6.3 Gestionar organizaciones

  • Dentro de las organizaciones podemos crear equipos y/o trabajar con colaboradores externos.

  • El nivel de permisos se gestiona a nivel de equipo.

  • Las personas tendrán los permisos de los equipos a los que pertenezca.

  • Los permisos se otorgan a cada repositorio.

6.4 Forkear proyectos

  • Para participar en un proyecto sin permisos de escritura, puedes forkearlo.

  • Consiste en crear una copia completa del repositorio bajo tu control: se encontrará en tu cuenta y podrás escribir en él sin limitaciones.

6.5 Pull-requests

  • Para enviar propuestas de mejora.

  • Se usa mucho para proyectos que no son tuyos y en donde te gustaría colaborar.

  • También se usa dentro de equipos para gestionar proyectos grandes.

6.6 Issues y Wikis

  • Todos los repositorios de GitHub tienen asociados:
    • un gestor de incidencias (issues)
    • una wiki para documentar

6.7 GitHub pages

6.8 Fichero README.md

  • Nos lo muestra renderizado en la página del reposiorio.

7 Markdown

7.1 ¿Qué es Markdown?

"Es un lenguaje de marcado ligero que trata de conseguir la máxima legibilidad y 'publicabilidad' usando texto plano."

7.2 Características principales

  • Texto plano
  • Sintaxis sencilla
  • Legibilidad
  • Publicabilidad
  • Exportabiliad

7.3 Chuleta de Markdown:

7.4 Editor online

7.5 Encabezados (I)

  • <h1>, <h2>, <h3>
# Encabezado de primer nivel

## Encabezado de segundo nivel

### Encabezado de tercer nivel

7.6 Encabezados (II)

  • Equivalente a lo anterior.
Encabezado de primer nivel
==========================

Encabezado de segundo nivel
---------------------------

### Encabezado de tercer nivel ###

7.7 Listas no numeradas

  • No enumeradas:
    • se puede usar el menos
    • se puede usar el asterísico
    • se puede usar el más
- se puede usar el menos
* se puede usar el asterísico
+ se puede usar el más

7.8 Listas numeradas

  • Enumeradas:
    1. Primer elemento
    2. Segundo elemento
    3. Tercer elemento
1. Primer elemento
1. Segundo elemento
1. Tercer elemento

7.9 Formato (negrita, cursiva, tachado)

  • Texto en cursiva con un asterisco o con un guión bajo.
  • Texto en negrita con dos asteriscos o con dos guiones bajos.
  • Texto tachado con dos virgulillas.
- Texto negrita con **dos asteriscos** o con __dos guiones bajos__.
- Texto cursiva con *un asterisco* o con _un guión bajo_.
- Texto tachado con ~~dos virgulillas~~.

7.10 tablas

Header Header Right
Cell Cell $10
Cell Cell $20
| Header | Header | Right  |
| ------ | ------ | -----: |
|  Cell  |  Cell  |   $10  |
|  Cell  |  Cell  |   $20  |

7.11 Citas

"No hay camino hacia el Software Libre, el Software Libre es el camino"

> "No hay camino hacia el Software Libre,
el Software Libre es el camino"

7.12 Código

require(maps) # activación de librería
require(mapproj) # se usará para projection="polyconic"
  # Cargar los datos
  # unemp incluye datos para condados de los Estados Unidos continentales.
data(unemp) # Datos de desempleo
data(county.fips) # mapa de los condados
require(maps) # activación de librería
require(mapproj) # se usará para projection="polyconic"
  # Cargar los datos
  # unemp incluye datos para condados de los Estados Unidos continentales.
data(unemp) # Datos de desempleo
data(county.fips) # mapa de los condados

7.13 Enlaces

- [Enlace con texto](https://github.com/asanzdiego/curso-git-github-markdown-2015)

- Enlace sencillo:
    -<https://github.com/asanzdiego/curso-git-github-markdown-2015>

7.14 Imágenes

  • Este obra está bajo una licencia:
Creative Commons BY SA
Creative Commons BY SA
- Este obra está bajo una licencia:

![Creative Commons BY SA](../img/cc-by-sa.png){ width=50% text-align=center }