Quien soy?
Estudios
- FP superior de Administración de Sistemas Informáticos
- Enxeñaría Técnica en Informática de Sistemas
- Enxeñaría en Informática
Quien soy?
Trabajo
Ahora:
- Profesor en CPR Liceo La Paz
Anteriormente:
- Consultor de software libre / SysAdmin en iCarto
- Oficina de Software Libre de la AMTEGA (Xunta)
- Mancomún Podcast
Quien soy?
Asociacionismo: GPUL - KDE España
También estudio Русский язык (ruso)
Sobre Git
- Sistema de Contol de Versiones / VCS (Version Control System)
- Sistema de Contol de Versiones Distribuido / DVCS (Distributed Version Control System)
- Escrito inicialmente en C por Linus Torvals
- Usado en el desarrollo del kernel de Linux
- Uno de los VCS más usados
- https://git-scm.com/
Forjas / Repositorios de código
Gestión de cambios en un proyecto 1/2
- Solución 0: no hacer ninguna gestión (versión única)
- Solución 1: ñapa rudimentaria (copias manuales)
Gestión de cambios en un proyecto 2/2
- Solución 2: VCS tradicionales: RCS, CVS, Subversion
- Conexión con repositorio central para todo
- Solución 3: DVCS: Bazaar, Mercurial, Git
- Autonomía y flexibilidad
- Commits locales
Terminología 1/2
- Repositorio: Almacén local o remoto en donde se ecuentra un proyecto que está bajo
control de versiones.
- Va cambiando con el tiempo -> Versión
- Se conserva un histórico de todas las versiones anteriores
- Commit: Conjunto de cambios en un repositorio entre dos versiones
- A veces también se le puede llamar parche (patch)
Terminología 2/2
- Working tree - Untracked area
- La zona donde se trabaja, antes de "git add"
- Index - Staging area
- Despues de "git add", pero antes de "git commit"
Diferencias entre ficheros (consola)
Diferencias entre ficheros (IDE)
Flujo de trabajo con Git 1
Flujo de trabajo con Git 2
Flujo de trabajo con Git 3
Flujo de trabajo con Git 4
Flujo de trabajo con Git 5
Flujo de trabajo con Git 6
Flujo de trabajo con Git 7
Flujo de trabajo con Git 8
Flujo de trabajo con Git 9
Comandos básicos de Git
- git init: Inicializa el directorio para trabajar con
git
- git clone <URL>: Clona el repositorio remoto de
la URL
- git add: Agrega cambios del Working tree al
Index
- git commit: Consolida cambios del Index y
creamos un nuevo commit
- git diff: Muestra cambios entre Working Tree y el
Index
- git show <commit>: Muestra el commit
commit
- git log: Muestra la historia de commits desde
HEAD
Más comandos de Git
- git status: Muestra el estado del Working Tree y
del Index
- git rm <fichero>: Borra el fichero y prepara los
cambios para el commit en el Index
- git mv <ficheroA> <ficheroB>: Renombramos
ficheroA como ficheroB y prepara los cambios para el commit
- git push: Envía los cambios locales a un repositorio
remoto
- git pull: Trae los cambios de un repositorio remoto al
local
Creación de un proyecto de cero en GitHub
GitHub
Licencias de software
- Licencias de Software Libre
- Licencias de Software Abierto
- Licencias de Software Propietario/Privativo
Software Libre
(4 libertades)
- Usar para cualquier proposito
- Ver el código fuente y modificarlo
- Distribuir copias
- Modificar el software y distribuir las modificaciones
Copyleft
GPL
AGPL
EUPL
...
Copyleft suave
LGPL (Lesser General Public License)
MPL (Mozilla Public License)
...
Permisivas - sin copyleft
BSD
Apache
MIT/Expat
...
Chuleta
Inicialización repositorio
Opción 1
Repositorio vacio en local - 1/3
Iniciamos un repositorio en local y lo vinculamos con uno remoto.
- git init
Se inicia repositorio local en el directorio actual
- git remote add <alias> <URL>
Vinculamos con el repositorio remoto de la URL usando el alias
Opción 1
Repositorio vacio en local - 2/3
Hacemos el primer commit.
- echo "#Mi proyecto de GitHub" > README.md
Creamos el fichero de README (podemos agregar más texto)
- git add README.md
Marcamos el fichero README.md como cambio listo para commit
- git commit -m "Agregado readme"
Confirmamos los cambios con un commit
Opción 1
Repositorio vacio en local - 3/3
Subimos los cambios al repositorio remoto.
- git branch -M main
Cambiamos el nombre de la rama a main
- git push -u origin main
Subimos los cambios de la rama al repositorio remoto origin estableciendo la
rama remota con el nombre main
Opción 2
Repositorio remoto inicializado - 1
Creamos un repositorio en GitHub ya con README.md y .gitignore.
Opción 2
Repositorio remoto inicializado - 2
Copiamos la URL para clonar el repositorio.
Opción 2
Repositorio remoto inicializado - 3
Clonamos el repositorio remoto en local.
- git clone <URL>
Clonamos el repositorio con la URL que copiamos en GitHub (creará una carpeta con el
nombre del repositorio)
- cd <nombre repo>
Entramos en la carpeta del proyecto
A trabajar!
Con nuestro repositorio inicializado (de cualquiera de las 2 formas) ya podemos trabajar.
Chuleta
Flujo de trabajo
Trabajamos en el directorio de nuestro proyecto
- git status
Vemos el estado general de nuestro repositorio
- git add <fichero(s)>
Agregamos los ficheros de los que queremos confirmar los cambios
- git commit -m "Mensaje de commit"
Consolidamos los cambios
- git push
Subimos los cambios al repositorio remoto
Una rama (branch) es
- Línea de trabajo paralela
- Probar ciertos cambios
a partir de un determinado punto
- No afectan a la línea de trabajo principal
- Podemos incorporar estos cambios otra línea con merge
Representación gráfica Rama
Nombres típicos de ramas
- Master -> Main
- Development
- Feature 1
- Feature 2
- Issue 1
- Issue 2
Comandos con ramas
- git branch <nombre> [<inicio>] Crear
rama
- git branch (-d|-D) <nombre> Borrar una
rama
- git branch -m <viejo> <nuevo> Renombrar
una rama
- git branch [-r|-a] Listar ramas actuales
- git checkout [-b] <nombre de rama> Situarse en
una rama (o en un commit)
- git [merge|rebase] <nombre de rama> Mezclar
rama
Documentación y referencia
Muchas gracias
Contáctame en LinkedIn
También me puedes escribir por correo a: braisariasrio en
liceolapaz punto net