Víctor Suárez García
HacktoberFestEs 2024
Ingeniero informático y Profesor que siempre esta tratando de aprender y dar charlas y talleres a los demás. Miembro de la asociación La Jaquería y Python Almería.
!Cuidado con el! !!usa Java¡¡
Git es una herramienta que permite el control de versiones de un proyecto de software de manera distribuida.
Git
Git es una herramienta que esta pensada en la eficiencia y la confiabilidad de un proyecto cuando este tiene un gran número de ficheros de código.
Git
Un fichero puede estar en distintos estados en un repositorio Git.
MacBook-Pro-de-Victor-2:PFC victor$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.md
nothing added to commit but untracked files present (use "git add" to track)
Git
Untracked Files: Ficheros que aún no han sido añadidos al repositorio Git.
MacBook-Pro-de-Victor-2:PFC victor$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.md
nothing added to commit but untracked files present (use "git add" to track)
Siempre podemos ver el estado de nuestro repositorio con git status
Git
Indexed Files: Ficheros que han sido añadidos al repositorio pero no se ha realizado commit
MacBook-Pro-de-Victor-2:PFC victor$ git add readme.md
MacBook-Pro-de-Victor-2:PFC victor$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: readme.md
Git
commited Files: Ficheros que han sido enviados al repositorio local.
MacBook-Pro-de-Victor-2:PFC victor$ git commit -m "subiendo cambios"
[master (root-commit) 3749849] subiendo cambios
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 readme.md
MacBook-Pro-de-Victor-2:PFC victor$ git status
On branch master
nothing to commit, working directory clean
Ejercicio Práctico:
Crear y añadir un fichero a un repositorio GIT.
Primer paso: Instalar GIT
Windows /Mac Os:
Ir a http://git-scm.org y descargar el sofware
Linux:
#: apt-get install git
#: yum install git
Segundo Paso: Inicializar un repositorio
Desde consola crear una carpeta y dentro de ella ejecutar la siguiente orden
> git init
Initialized empty Git repository in /Users/victor/Documents/hacklab/PFC/.git/
Nota: Para los usuarios de Windows ejecutar la aplicación Git Bash que encontraréis en el menú de inicio.
Tercer Paso: Crear un fichero
Crear un fichero llamado readme.md en la carpeta donde hemos inicializado el repositorio.
Hola Mundo
Ejecutar la orden git status
Cuarto Paso: Añadir el fichero al control de versiones
Añadir el fichero usando la orden git add luego comprobar con git status
MacBook-Pro-de-Victor-2:PFC victor$ git add readme.md
MacBook-Pro-de-Victor-2:PFC victor$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: readme.md
Quinto Paso: Commitear los cambios
Realizar el commit usando git commit y añadir un mensaje con la opción -m "mensaje"
MacBook-Pro-de-Victor-2:PFC victor$ git commit -m "subiendo cambios"
[master (root-commit) 3749849] subiendo cambios
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 readme.md
En caso de error, hay que añadir el usuario y mail para realizar commit.
>git config user.name "victor"
>git config user.mail "miemail@dominio.com"
Hasta ahora hemos estado trabajando en local realizando commits. Pero necesitamos una manera de poder compartir nuestro código con nuestros compañeros de equipo o de subir nuestro código a la comunidad de Software Libre.
Para ello necesitamos tener un repositorio remoto que en este caso vamos a utilizar GitHub
GitHub es una página web que nos provee un servicio de control de versiones usando Git como herramienta.
Pero no es open source.
Gitlab es una página web que nos provee un servicio de control de versiones usando Git como herramienta.
Pero SI es open source.
GitHub no solo nos permite tener un control en nuestro código sino que también nos permite tener un control de incidencias, documentación, pull request, etc...
Una issue es una petición que puede hacerse a un repositorio; puede ser informar de un error, pedir una mejora e incluso puede ser un punto de discusion de distintos temas.
OJO: Las peticiones de Hacktoberfest se identifican por una etiqueta con el mismo nombre
Nos conectaremos a https://github.com y nos crearemos una cuenta.
Una vez hecho esto, nos crearemos un nuevo repositorio pulsando en el botón verde que nos aparecerá
En Github podemos tener repositorio publico(son visibles por todos) como privados.
Además de integración continua gracias a Github Actions.
Nota: Github tiene una oferta mejora en repositorios privados para estudiantes.
Una vez creado el repositorio vamos a copiar la dirección que nos provee Github(en Https)
Gitlab es una plataforma que nos va a permitir tener también repositorios tanto publicos como privados y además integración continua.
Con gitlab podemos crear un nuevo proyecto (repositorio) de forma sencilla y nos permitirá además crear proyectos más complejos.
Una vez creado nuestro proyecto ya podemos copiar la dirección https
Por último volvemos a nuestra consola en nuestro repositorio local y ejecutamos las siguientes ordenes.
>git remote add origin https://github.com/zerasul/github101.git
#donde esta dirección debe ser la que hemos copiado
>git push origin master
Una vez hecho esto, también podemos obtener los cambios con git pull
>git pull origin master
Supongamos que estamos trabajando en 1 proyecto con varias personas. Y 2 personas modifican el mismo archivo a la vez.
git add miarchivo.txt
git commit -m "Subiendo cambios"
git push origin master
git add miarchivo.txt
git commit -m "Subiendo cambios molones"
git push origin master
Para disminuir estos conflictos y tener unas buenas prácticas podemos usar ramas para no entorpecer a otros desarrolladores.
Las Ramas son punteros a commits que hemos realizado para dicha rama; a diferencia de SVN que son copias completas del proyecto
La rama principal siempre es master.
NOTA: en las ultimas versiones git la rama principal es main.
Hasta ahora solo teníamos una rama y trabajábamos en ella (Rama Master).
Sin embargo ahora podemos tener varias ramas en nuestro desarrollo.
Para crear una Rama usaremos el comando git branch
>git branch tarea1
Para cambiar de rama podemos usar el comando git checkout
>git checkout tarea1
Switched to branch "tarea1"
O usar el comando checkout con el modificador -b
>git checkout -b "tarea2"
Switched to new branch "tarea2"
Podemos comprobar en que rama estamos con git status.
MacBook-Pro-de-Victor-2:PFC victor$ git status
On branch tarea1
nothing to commit, working directory clean
El esquema actual tras hacer commit puede ser el siguiente.
Si queremos volcar los cambios a la rama master una vez finalizada la tarea usaremos el comando git merge.
MacBook-Pro-de-Victor-2:PFC victor$ git checkout master
Switched to branch 'master'
MacBook-Pro-de-Victor-2:PFC victor$ git merge tarea1
Updating 3749849..ed9baa2
Fast-forward
readme.md | 1 +
1 file changed, 1 insertion(+)
Es importante tener una buena estrategia de branching a la hora de realizar nuestro desarrollos. Se recomienda tener 4 ramas.
Hasta ahora hemos estado desarrollando en proyectos pequeños con pocos desarrolladores. Pero que pasa en proyectos con muchos desarrolladores como por ejemplo el núcleo de Linux; ¿Como se gestiona?
Supongamos que queremos realizar un cambio en la página web de HackLab.
Tenemos 2 opciones:
Vamos a realizar la segunda opción. Ya que no tenemos acceso a dicho repositorio.
Primero realizaremos un fork desde Github
Un fork es una copia del repositorio que se creará en nuestro usuario.
Una vez tenemos el repositorio, vamos a clonarlo a nuestro equipo para trabajar en local.
>git clone https://github.com/zerasul/hacklab-almeria.github.io.git
#Donde la direccion es la de nuestro repositorio clonado.
Cuando terminemos de hacer los cambios volvemos a Github y vamos al apartado de Pull Request
Al usar Gitlab También se puede realizar la misma operación; creando un Merge Request.
Primer paso: Realizar un fork del repositorio:
https://github.com/zerasul/github101
https://gitlab.com/zerasul/github101
Segundo Paso: Clonar el repositorio creado en vuestro equipo.
git clone <direccion fork>
Tercer Paso: Realizar algun cambio y subirlo al repositorio.
Cuarto Paso: Crear un Pull/merge Request
Markdown es un lenguaje de marcado que permite de forma rápida y sencilla escribir textos con formato.
# Esto es un encabezado
**Texto en negrita**
_texto en cursiva_
![descripcion](uri imagen) Imagen en MarkDown
[texto](url) enlace en MarkDown
```java
System.out.println("Hola Mundo");
```
En Github podemos usar MarkDown para documentar nuestros proyectos. Solo tenemos que crear un fichero llamado readme.md.
Una vez hemos aprendido a utilizar Git, vamos a utilizarlo usando un Entorno de Desarrollo Integrado (IDE)
Con Visual Studio code podemos ver facilmente los cambios que hemos realizado y poder realizar commits facilmente.