clase:daw:daw:tema01
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| clase:daw:daw:tema01 [2026/10/28 09:31] – borrado - editor externo (Fecha desconocida) 127.0.0.1 | clase:daw:daw:tema01 [2026/10/28 09:57] (actual) – ↷ Enlaces adaptados debido a una operación de mover Lorenzo | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 1. Git: Repaso ====== | ||
| + | Vamos a empezar el curso haciendo un repaso de Git | ||
| + | |||
| + | Mas información | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | {{chiste_git.png|}} | ||
| + | |||
| + | {{clase: | ||
| + | |||
| + | |||
| + | {{clase: | ||
| + | |||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | Código nuestro que estas en GitHub. | ||
| + | Santificados sean tus commits. | ||
| + | Venga a nosotros tu fetch. | ||
| + | Hágase tu merge tanto en remoto como en local. | ||
| + | Danos hoy nuestro branch de cada día. | ||
| + | Perdona nuestras pulls, así como también nosotros perdonamos a los que nos pushean más rápido; | ||
| + | No nos dejes caer en los conflictos, | ||
| + | y líbranos del checkout. | ||
| + | Amén | ||
| + | ---Javier del Moral (2023) | ||
| + | |||
| + | |||
| + | ===== Instalando Git ===== | ||
| + | |||
| + | ==== Windows ==== | ||
| + | Se instala [[https:// | ||
| + | |||
| + | * En la siguiente pantalla se debe marcar: **«Use Git and optional Unix tools from the Command Prompt»**: git y los comandos de Linux en cualquier terminal (Git Bash, '' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | * En la siguiente pantalla se debe marcar: **«Only ever fast-forward»**: | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ==== Linux ==== | ||
| + | Para tener la última versión de Git se instala desde su PPA: | ||
| + | |||
| + | sudo add-apt-repository ppa: | ||
| + | sudo apt update | ||
| + | sudo apt install git | ||
| + | |||
| + | Y se configura lo mismo que en Windows se elige con «Only ever fast-forward»: | ||
| + | |||
| + | git config --global pull.ff only | ||
| + | |||
| + | ==== Windows/ | ||
| + | Una vez instalado Git, hay que indicar cual es nuestro nombre y nuestro correo. | ||
| + | |||
| + | git config --global user.name " | ||
| + | git config --global user.email juan@micorreo.com | ||
| + | |||
| + | Si estás en el **instituto**, | ||
| + | |||
| + | git config --global http.proxy http:// | ||
| + | git config --global https.proxy http:// | ||
| + | |||
| + | ===== El inicio de Git ===== | ||
| + | Los comandos básicos de Git son: | ||
| + | |||
| + | * Para iniciar un directorio y que se pueda usar Git | ||
| + | |||
| + | git init | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Para descargar un repositorio que ya existe | ||
| + | |||
| + | git clone https:// | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Estados de un fichero | ||
| + | |||
| + | |||
| + | * **untracked** o archivos sin seguimiento: | ||
| + | * **staged** o cambios a ser confirmados: | ||
| + | * **committed**: | ||
| + | * **modified** o cambios no rastreados para el commit: Son ficheros que se han modificado desde el último commit pero que aun no se han añadido para el próximo commit. | ||
| + | |||
| + | <note tip> | ||
| + | La //**staged area**// en git también se llama a veces // | ||
| + | |||
| + | * El comando [[https:// | ||
| + | * El comando [[https:// | ||
| + | * El comando [[https:// | ||
| + | |||
| + | |||
| + | ^ ^ '' | ||
| + | ^ '' | ||
| + | ^ '' | ||
| + | ^ '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | Por defecto todos los ficheros del anterior commit ya está en el staged area, por eso para quitar un fichero de git hay que borrarlo del staged area. '' | ||
| + | </ | ||
| + | |||
| + | {{clase: | ||
| + | |||
| + | |||
| + | * Por defecto el comando '' | ||
| + | |||
| + | git commit -m " | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | * Para añadir un fichero a la //staged area// usamos el comando | ||
| + | |||
| + | git add fichero | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | * Podemos hacer que el comando '' | ||
| + | |||
| + | git commit -a -m " | ||
| + | |||
| + | |||
| + | {{clase: | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Para quitar un fichero de la //staged area//. Es como lo opuesto a '' | ||
| + | |||
| + | git restore --staged fichero | ||
| + | |||
| + | < | ||
| + | También se puede usar el comando '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Para borrar un fichero y que ya no esté a partir de ahora en " | ||
| + | |||
| + | git rm --cached fichero | ||
| + | |||
| + | < | ||
| + | También se puede usar el comando '' | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Para deshacer los cambios de un fichero que hay en el área de trabajo y se cambie por la versión que hay en el último //commit//. | ||
| + | |||
| + | git restore fichero | ||
| + | |||
| + | < | ||
| + | También se puede usar el comando '' | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | También se puede añadir el argumento '' | ||
| + | |||
| + | ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | |||
| + | * Para ver el estado de cada uno de los ficheros | ||
| + | |||
| + | git status | ||
| + | | ||
| + | |||
| + | En la rama master | ||
| + | Cambios a ser confirmados: | ||
| + | (usa "git restore --staged < | ||
| + | nuevos archivos: facturas.html | ||
| + | | ||
| + | Cambios no rastreados para el commit: | ||
| + | (usa "git add < | ||
| + | (usa "git restore < | ||
| + | modificados: | ||
| + | | ||
| + | Archivos sin seguimiento: | ||
| + | (usa "git add < | ||
| + | cliente.html | ||
| + | |||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | | ||
| + | |||
| + | <note important> | ||
| + | Para simplificar el uso de Git se recomienda hacer el '' | ||
| + | * modificar un ficherio | ||
| + | * '' | ||
| + | * modificar el fichero de nuevo | ||
| + | * Si hacemos ahora un '' | ||
| + | * '' | ||
| + | |||
| + | En el commit solo se guardan los primeros cambios y no los segundos. Ya que al hacer el '' | ||
| + | |||
| + | </ | ||
| + | |||
| + | Más información: | ||
| + | * [[https:// | ||
| + | |||
| + | ===== Sincronización de Git ===== | ||
| + | Una misma rama en git puede estar en varios sitios a la vez. El repositorio es el historio donde están todos los //commits// que se han hecho. | ||
| + | |||
| + | {{clase: | ||
| + | |||
| + | Vamos a explicar cada uno de ellos suponiendo que estamos en la rama '' | ||
| + | |||
| + | |||
| + | |||
| + | * Carpeta local o área de trabajo o árbol de trabajo: Es donde están los ficheros con lo que trabajamos nosotros directamente mientras programamos. | ||
| + | * Repositorio local: | ||
| + | * Rama **master**: | ||
| + | * Rama **origin/ | ||
| + | * Repositorio remoto: Es un repositorio que está en otra máquina. | ||
| + | * Rama **master**: Es donde queremos copiar los //commits// de nuestra rama '' | ||
| + | |||
| + | {{clase: | ||
| + | |||
| + | * Para poner en el área de trabajo una copia del último //commit// de '' | ||
| + | |||
| + | git switch master | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | * Para copiar los //commits// que hay en nuestro repositorio local al repositorio remoto (y también a la copia del repositorio remoto '' | ||
| + | |||
| + | git push | ||
| + | o | ||
| + | git push origin master | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Para copiar lo que hay en el repositorio remoto en una rama local que es después del fetch siempre copia del repositorio remoto, es decir en '' | ||
| + | |||
| + | git fetch | ||
| + | o | ||
| + | git fetch origin master | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | * Para copiar lo que hay en el repositorio remoto en nuestras ramas locales, es decir en '' | ||
| + | |||
| + | git pull | ||
| + | o | ||
| + | git pull origin master | ||
| + | |||
| + | |||
| + | <note warning> | ||
| + | El problema es que si hacemos '' | ||
| + | Así que mi recomendación es nunca usar '' | ||
| + | |||
| + | </ | ||
| + | <note tip> | ||
| + | Recuerda: Nunca uses '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Para //mergear// lo que hay en la rama '' | ||
| + | |||
| + | git merge --ff-only origin/ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | ==== Remotes ==== | ||
| + | El Git un " | ||
| + | |||
| + | * Para ver la lista de remotes. | ||
| + | |||
| + | git remote -v | ||
| + | | ||
| + | origin https:// | ||
| + | origin https:// | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Para añadir un nuevo remote | ||
| + | |||
| + | git remote add nombreminuevoremote https:// | ||
| + | |||
| + | Una vez creado el remote '' | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Borrado de commits ===== | ||
| + | El comando '' | ||
| + | |||
| + | |||
| + | * Volver a un commit anterior y **borrando** todos los posteriores pero modificando el //área de trabajo// al dejar ahí los ficheros del commit y vaciando la //staged area//. | ||
| + | |||
| + | git reset --hard 0d588ed | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | | ||
| + | |||
| + | * Volver a un commit anterior y **borrando** todos los posteriores pero sin modificar ni el //área de trabajo// ni la //staged area//. | ||
| + | |||
| + | git reset --soft 0d588ed | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | * Volver a un commit anterior y **borrando** todos los posteriores , sin modificar ni el //área de trabajo// pero vaciando la //staged area//. | ||
| + | |||
| + | git reset --mixed 0d588ed | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | * Si queremos deshacer el último commit (es decir como si no hubiéramos lanzado el comando '' | ||
| + | |||
| + | git reset --soft HEAD~1 | ||
| + | |||
| + | \\ | ||
| + | |||
| + | La siguiente tabla resume lo que hace cada modificador: | ||
| + | |||
| + | ^ ^ Borra los commits siguientes | ||
| + | ^ --hard | ||
| + | ^ --mixed | ||
| + | ^ --soft | ||
| + | |||
| + | \\ | ||
| + | |||
| + | Ejemplos de como hacer un commit y lo que se necesita hacer después de borrarlo | ||
| + | |||
| + | ^ ^ soft ^ mixed ^ hard ^ | ||
| + | ^ Hacer el commit | <sxh base> | ||
| + | vi fichero | ||
| + | git add fichero | ||
| + | git commit -m " | ||
| + | </ | ||
| + | vi fichero | ||
| + | git add fichero | ||
| + | git commit -m " | ||
| + | </ | ||
| + | vi fichero | ||
| + | git add fichero | ||
| + | git commit -m " | ||
| + | </ | ||
| + | ^ Borrar el commit |<sxh base> | ||
| + | git reset --soft HEAD~1 | ||
| + | </ | ||
| + | git reset --mixed HEAD~1 | ||
| + | </ | ||
| + | git reset --hard HEAD~1 | ||
| + | </ | ||
| + | ^ Rehacer el commit |<sxh base> | ||
| + | git commit -m " | ||
| + | </ | ||
| + | git add fichero | ||
| + | git commit -m " | ||
| + | </ | ||
| + | vi fichero | ||
| + | git add fichero | ||
| + | git commit -m " | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | <note warning> | ||
| + | Nunca borrar commits que ya esté subidos a Github excepto si contienen alguna contraseña, | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | Mas información en: | ||
| + | * {{deshaciendo-cambios-en-git.pdf|Deshaciendo cambios en git}} | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | ===== Deshacer commits ===== | ||
| + | Una vez que hemos subido un commit a GitHub es una muy mala práctica borrar un commit sin embargo si queremos deshacer algo , podemos usar '' | ||
| + | |||
| + | |||
| + | * Se hace un nuevo commit que deshace el último commit | ||
| + | |||
| + | git revert HEAD~1 | ||
| + | |||
| + | * Prepara un nuevo commit que deshace el último commit pero sin realmente hacer el commit. Lo que hace el modificar los ficheros y añadirlos a la //staged area// | ||
| + | |||
| + | |||
| + | git revert --no-commit HEAD~1 | ||
| + | git commit -am " | ||
| + | |||
| + | |||
| + | <note tip>La opción '' | ||
| + | |||
| + | Si no estamos interesados en hacer el commit lo podemos abortar con '' | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | En caso de un conflicto se deberá resolver el conflicto en el fichero, hacer el '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | La diferencia entre '' | ||
| + | |||
| + | |||
| + | |||
| + | * Estado inicial de | ||
| + | |||
| + | < | ||
| + | %%{init: { ' | ||
| + | gitGraph | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * Si hacemos un '' | ||
| + | |||
| + | < | ||
| + | %%{init: { ' | ||
| + | gitGraph | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Si hacemos un '' | ||
| + | |||
| + | < | ||
| + | %%{init: { ' | ||
| + | gitGraph | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Moverse por git ===== | ||
| + | En git podemos // | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Ramas ==== | ||
| + | Para movernos por ramas solo hay que indicar el nombre de la rama | ||
| + | |||
| + | git switch develop | ||
| + | |||
| + | Si la rama es del tipo '' | ||
| + | |||
| + | git switch --detach origin/ | ||
| + | |||
| + | |||
| + | ==== Commits ==== | ||
| + | Podemos movernos a un commit anterior de forma que los ficheros de ese commit estén en nuestro directorio de trabajo. El lanzar esta orden no modifica ningún commit.Su utilidad es ver como estaba el código en estados anteriores. Hay que indicar '' | ||
| + | |||
| + | git switch --detach 2308b63 | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | Si ahora lanzamos el comando '' | ||
| + | |||
| + | HEAD desacoplada en 2308b63 | ||
| + | nada para hacer commit, el árbol de trabajo está limpio | ||
| + | |||
| + | El significado de **HEAD desacoplada** o **HEAD detached** es que ahí no podemos trabajar, | ||
| + | |||
| + | |||
| + | * Para volver al commit último de la rama solo hay que poner el nombre de la rama en vez de un commit | ||
| + | |||
| + | git switch master | ||
| + | |||
| + | |||
| + | |||
| + | ===== Configuración ===== | ||
| + | |||
| + | ==== .gitkeep ==== | ||
| + | Por defecto Git no sube las carpetas vacías, por lo que si queremos que las suba hay que añadir algún fichero. Por convención se suele crear un fichero llamado '' | ||
| + | |||
| + | ==== .gitignore ==== | ||
| + | El fichero | ||
| + | |||
| + | * Por ejemplo para que no se suba el fichero '' | ||
| + | |||
| + | / | ||
| + | |||
| + | ==== Almacenando contraseñas ==== | ||
| + | Normalmente trabajamos siempre en nuestro ordenador y no queremos todas las veces volver a poner la contraseña. En ese caso se puede decir a git que la almacene y no nos la vuelva a pedir: | ||
| + | |||
| + | \\ | ||
| + | |||
| + | * No te vuelve a pedir la contraseña en 15 min | ||
| + | |||
| + | git config --global credential.helper cache | ||
| + | |||
| + | \\ | ||
| + | |||
| + | |||
| + | * Almacena la contraseña en el disco en texto plano y nunca mas te la vuelve a pedir. | ||
| + | |||
| + | git config --global credential.helper store | ||
| + | | ||
| + | | ||
| + | ===== Stash ===== | ||
| + | Hay veces que queremos guardar temporalmente los cambios para después volver a ellos, por ejemplo si queremos cambiar de rama. | ||
| + | |||
| + | git contiene una orden para hacer eso que es '' | ||
| + | |||
| + | * Guardar solo lo modificado (estén o no en el //staged area//) | ||
| + | <sxh bash > | ||
| + | git stash push | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Guarda todos los ficheros aunque NO estén en la //stage area//. Es decir, también los ficheros nuevos. Y al hacer el '' | ||
| + | <sxh bash> | ||
| + | git stash push --include-untracked | ||
| + | </ | ||
| + | |||
| + | |||
| + | ^ | ||
| + | | Los ficheros modificados (estén o no en el //staged area// | ||
| + | | Los ficheros nuevos | | ✓ | ✓ | | ||
| + | | Los ficheros ignorados | | | ✓ | | ||
| + | |||
| + | |||
| + | |||
| + | Y si luego queremos recuperar los cambios se hace con: | ||
| + | |||
| + | <sxh bash> | ||
| + | git stash pop | ||
| + | </ | ||
| + | |||
| + | * Pero en el caso de hubiera algo en el //staged area// se tendría que hacer con el argumento '' | ||
| + | |||
| + | <sxh bash> | ||
| + | git stash pop --index | ||
| + | </ | ||
| + | |||
| + | ==== Cuidado con '' | ||
| + | |||
| + | Cuando guardas un stash, git recuerda **qué ficheros estaban en el //staged area//** y cuáles no. Pero al hacer '' | ||
| + | |||
| + | Si quieres que se respete ese estado original — que lo que estaba en el //staged area// vuelva al //staged area// — tienes que usar: | ||
| + | <sxh bash> | ||
| + | git stash pop --index | ||
| + | </ | ||
| + | |||
| + | === Ejemplo para verlo claro === | ||
| + | |||
| + | Supón que tienes: | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Haces '' | ||
| + | * Ambos ficheros aparecen como modificados, | ||
| + | |||
| + | Si en cambio haces '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * El estado queda **exactamente** como lo dejaste antes del stash. | ||
| + | |||
| + | ^ Comando | ||
| + | | '' | ||
| + | | '' | ||
| + | ===== Log ===== | ||
| + | El comando '' | ||
| + | |||
| + | * Ver los commits en una única línea cada commit | ||
| + | |||
| + | git --no-pager log --pretty=oneline | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Ver los commits indicando que campos queremos mostrar e indicando el formato de la fecha. Los campos a mostrar se pueden ver en [[https:// | ||
| + | |||
| + | git --no-pager log --pretty=tformat:" | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | **Campos a mostrar** | ||
| + | {{clase: | ||
| + | |||
| + | |||
| + | **Formato de Fechas** | ||
| + | {{clase: | ||
| + | |||
| + | * Ver el árbol de commits | ||
| + | |||
| + | git log --graph --oneline --decorate --all | ||
| + | ===== Diff ===== | ||
| + | Permite ver la diferencia entre dos //objetos// de git, como commits y ramas o working area. | ||
| + | |||
| + | * Vemos la diferencia entre el último commit '' | ||
| + | |||
| + | git diff HEAD HEAD^ | ||
| + | |||
| + | * Vamos la diferencia entre las ramas '' | ||
| + | |||
| + | git diff master release | ||
| + | |||
| + | * Las diferencias entre tu área de trabajo (working area) y el último commit (HEAD) | ||
| + | |||
| + | git diff | ||
| + | |||
| + | * Los cambios en tu directorio de trabajo, tanto los que están en staging como los que no. | ||
| + | |||
| + | git diff HEAD | ||
| + | |||
| + | Más información: | ||
| + | * [[https:// | ||
| + | |||
| + | ===== Show ===== | ||
| + | Permite ver que cambió al hacer un commit concreto además de mostrar sus medatatos. | ||
| + | |||
| + | |||
| + | git show HEAD | ||
| + | |||
| + | |||
| + | |||
| + | La diferencia entre '' | ||
| + | |||
| + | Más información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | ===== Blame ===== | ||
| + | El comando '' | ||
| + | |||
| + | Lo que hace es mostrar, linea a linea el fichero, pero al principio de cada línea indica el commit , el usuario y la fecha de la última persona que modificó esa línea | ||
| + | |||
| + | |||
| + | git blame Fichero.java | ||
| + | |||
| + | Si no quieres que te muestra todas las líneas sino solo una concretas , se usa: | ||
| + | |||
| + | git blame -L 10,20 Fichero.java | ||
| + | | ||
| + | | ||
| + | Más información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | ===== Mensajes de commit ===== | ||
| + | Los mensajes de commit deben seguir el siguiente formato: | ||
| + | |||
| + | type(# | ||
| + | | ||
| + | Explicación (opcional) | ||
| + | |||
| + | Siendo | ||
| + | * '' | ||
| + | * feat: Si se añade una nueva funcionalidad (feature) | ||
| + | * fix: Si se arregla (fix) un error | ||
| + | * docs: Si solo cambia cosas de la documentación | ||
| + | * style: Si solo se cambia el estilo del código como tabuladores, | ||
| + | * refactor: Si se cambia el código para mejorar su calidad pero sin modificar la funcionalidad. Eso se llamada refactorizar. | ||
| + | * test: Si se cambian cosas relacionadas con test automáticos. | ||
| + | * chore: Si se cambian cosas relacionadas con el despliegue. | ||
| + | * ''# | ||
| + | | ||
| + | Vamos ahora unos ejemplos: | ||
| + | |||
| + | * Se arregla el fallo 45 que se llama "Falla si la fecha está vacía" | ||
| + | |||
| + | fix(# | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | * Se añade la nueva funcionalidad llamada " | ||
| + | |||
| + | feat(# | ||
| + | | ||
| + | El listado se ha hecho en HTML en vez de generar un PDF. | ||
| + | |||
| + | === Generar HTML con los issues === | ||
| + | Para generar un HTML a partir de los los de git se puede usar este script llamado '' | ||
| + | |||
| + | <sxh bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | # Verificar que se pasó un archivo como argumento | ||
| + | if [ $# -ne 3 ]; then | ||
| + | echo "Uso: $0 usuario_de_git repositorio_de_git archivo_de_salida" | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | # Usuario y repositorio de Git para el enlace de los commits e issues | ||
| + | git_user=" | ||
| + | git_repository=" | ||
| + | |||
| + | # Archivo de salida | ||
| + | output_file=" | ||
| + | |||
| + | # Crear el encabezado HTML | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | # Leer el archivo de texto línea por línea | ||
| + | git --no-pager log --pretty=tformat:" | ||
| + | # Separar el cuarto campo en tres partes: prefijo, número y texto | ||
| + | prefijo=$(echo " | ||
| + | numero=$(echo " | ||
| + | descripcion=$(echo " | ||
| + | | ||
| + | # Añadir una fila a la tabla HTML | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | done | ||
| + | |||
| + | # Cerrar la tabla y el HTML | ||
| + | echo "</ | ||
| + | echo "</ | ||
| + | echo "</ | ||
| + | |||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | * Y se ejecuta así: | ||
| + | |||
| + | <sxh python> | ||
| + | ./ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Ejercicios ===== | ||
| + | Para todos los ejercicios de este tema, se usarán los comandos de Git siempre que sea posible y los mensajes de los commits deberán seguir el formato explicado en clase. | ||
| + | |||
| + | ==== Ejercicio 1 ==== | ||
| + | * En tu ordenador instala Git y configura el usuario y el correo que usará | ||
| + | * En una carpeta vacía inicializala para poder usar Git. | ||
| + | * Crea 3 ficheros y haces un commit con ellos. Los ficheros se llamarán | ||
| + | * index.html | ||
| + | * index.js | ||
| + | * main.css | ||
| + | * Haz otro commit con lo siguiente: | ||
| + | * Modificación de index.html | ||
| + | * Nuevo fichero cal.js | ||
| + | * Modifica 3 ficheros pero que en el commit solo sea con dos de los ficheros modificados. | ||
| + | * Deshaz los cambios del fichero que estaba modificado pero que no se incluyó en el commit.Y mira como está el estado de Git | ||
| + | * Crea un nuevo fichero , modifica otro y haz que si se hiciera un commit se incluyeran esos ficheros (pero no hagas el commit). Y mira como está el estado de Git | ||
| + | * Haz que los dos ficheros anteriores ahora no se incluyan si se hiciera el commit | ||
| + | * Haz que el fichero index.html se borre de git | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | |||
| + | ==== Ejercicio 2 ==== | ||
| + | En este ejercicio vamos a tener 2 carpetas que estarán " | ||
| + | |||
| + | * Crea una cuenta en Github | ||
| + | * Crea un repositorio llamado " | ||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | |||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | |||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | |||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | * Desde la carpeta " | ||
| + | |||
| + | |||
| + | |||
| + | ==== Ejercicio 3 ==== | ||
| + | |||
| + | * En una carpeta vacía inicializala para poder usar Git. | ||
| + | * Crea otros 2 ficheros y haz un nuevo commit. | ||
| + | * Crea otros 2 ficheros y haz un nuevo commit. | ||
| + | * Crea otros 2 ficheros y haz un nuevo commit. | ||
| + | * Crea otros 2 ficheros y haz un nuevo commit. | ||
| + | * Muestra el histórico de commits haciendo que solo salga el hash abreviado ,la fecha del commit en formato " | ||
| + | * Borra los dos últimos commits. Y muestra ahora de nuevo el histórico como en el paso anterior. | ||
| + | |||
| + | * Haz que en el area de trabajo se muestren los ficheros del primer commit que hiciste. | ||
| + | * Haz que en el area de trabajo se muestren los ficheros del último commit que hay. | ||
| + | |||
| + | * Crea otros 2 ficheros y haz un nuevo commit. | ||
| + | * Modifica el commit que acabas de hacer para cambiar el mensaje del commit (deberás borrar el commit pero sin tocar los ficheros del area de trabajo). | ||
| + | |||
| + | * Modifica un fichero , añade un fichero y y haz un nuevo commit. | ||
| + | * Modifica el commit que acabas de hacer para añadir un tercer fichero. | ||
| + | |||
| + | ==== Ejercicio 4 ==== | ||
| + | Crea un nuevo proyecto de NodeJS y haz lo siguiente: | ||
| + | * Que esté el '' | ||
| + | * Instala alguna librería en la carpeta '' | ||
| + | * Crea la carpeta '' | ||
| + | * Que sea un proyecto de Git | ||
| + | |||
| + | Modifica el proyecto de Git de forma que no se suba la carpeta '' | ||
| + | |||
