Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:daw:daw:1eval:tema05 [2022/12/07 12:18] admin [Estados de un fichero] |
clase:daw:daw:1eval:tema05 [2024/03/02 13:01] admin [Sincronización de Git] |
||
---|---|---|---|
Línea 13: | Línea 13: | ||
{{chiste_git.png|}} | {{chiste_git.png|}} | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | [[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 ====== | ====== Instalando Git ====== | ||
Al instalar Git en Windows hay varias opciones a tener en cuenta que explicaremos en clase. | Al instalar Git en Windows hay varias opciones a tener en cuenta que explicaremos en clase. | ||
Línea 60: | Línea 78: | ||
* **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. | * **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. '' | ||
+ | </ | ||
{{: | {{: | ||
Línea 90: | Línea 126: | ||
git restore --staged fichero | 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 " | + | * Para borrar un fichero y que ya no esté a partir de ahora en " |
git rm --cached fichero. | git rm --cached fichero. | ||
+ | |||
+ | |||
\\ | \\ | ||
Línea 103: | Línea 146: | ||
git restore fichero | git restore fichero | ||
+ | < | ||
+ | También se puede usar el comando '' | ||
+ | </ | ||
\\ | \\ | ||
\\ | \\ | ||
Línea 143: | Línea 189: | ||
</ | </ | ||
+ | |||
+ | Más información: | ||
+ | * [[https:// | ||
===== Sincronización de Git ===== | ===== 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. | 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. | ||
+ | |||
+ | {{: | ||
Vamos a explicar cada uno de ellos suponiendo que estamos en la rama '' | Vamos a explicar cada uno de ellos suponiendo que estamos en la rama '' | ||
Línea 160: | Línea 211: | ||
{{: | {{: | ||
- | * Para poner en el área de trabajo una copia del último //commit// de '' | + | * Para poner en el área de trabajo una copia del último //commit// de '' |
- | git checkout | + | git switch |
\\ | \\ | ||
Línea 175: | Línea 226: | ||
\\ | \\ | ||
\\ | \\ | ||
- | * Para copiar lo que hay en el repositorio remoto en la copia del repositorio remoto, es decir en '' | + | * Para copiar lo que hay en el repositorio remoto en una rama local que es después del fetch siempre |
git fetch | git fetch | ||
Línea 184: | Línea 235: | ||
\\ | \\ | ||
- | * Para copiar lo que hay en el repositorio remoto en nuestra rama loca, es decir en '' | + | * Para copiar lo que hay en el repositorio remoto en nuestras ramas locales, es decir en '' |
git pull | git pull | ||
Línea 322: | Línea 373: | ||
* [[https:// | * [[https:// | ||
- | ===== Moverse por commits | + | ===== Moverse por git ===== |
- | El comando '' | + | En git podemos // |
- | * Volver a un commit anterior, no se borran los siguientes commits | + | < |
- | | + | ==== Ramas ==== |
+ | Para movernos por ramas solo hay que indicar el nombre de la rama | ||
+ | |||
+ | | ||
+ | |||
+ | 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 | ||
\\ | \\ | ||
Línea 333: | Línea 397: | ||
Si ahora lanzamos el comando '' | Si ahora lanzamos el comando '' | ||
- | HEAD detached at 0d588ed | + | HEAD desacoplada en 2308b63 |
- | | + | |
- | El significado de **HEAD detached** es que ahí no podemos trabajar, | + | 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 | * Para volver al commit último de la rama solo hay que poner el nombre de la rama en vez de un commit | ||
- | git checkout | + | git switch |
- | ===== reset vs checkout ===== | + | |
- | Veamos ahora una pequeña tabla que compra ambos comandos. | + | |
- | + | ||
- | + | ||
- | | ^ Ámbito | + | |
- | ^ Orden ^ Fichero | + | |
- | | '' | + | |
- | | '' | + | |
Línea 380: | Línea 436: | ||
git config --global credential.helper store | 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 que está en la //stage 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 | ||
+ | git contiene una orden para hacer eso: | ||
+ | <sxh bash> | ||
+ | git stash push --all | ||
+ | </ | ||
+ | |||
+ | |||
+ | Y si luego queremos recuperar los cambios se hace con: | ||
+ | |||
+ | <sxh bash> | ||
+ | git stash pop | ||
+ | </ | ||
+ | |||
===== Log ===== | ===== Log ===== |