| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
| info:cursos:altran:git [23/10/2024 23:35] – [añadir] mate | info:cursos:altran:git [31/10/2025 11:09] (actual) – mate |
|---|
| |
| == stash (limbo) | == stash (limbo) |
| === añadir | [[tech:git:stash|]] |
| * ''git stash'' : guarda ficheros de *staged area* | |
| * ''git stash save [-u | %%--%%include-untracked] "<message>"'' : le da un nombre a la sesión guardada en el stash | |
| * ''-u'' : incluye los ficheros untracked | |
| * ''git stash save [-k | %%--%%keep-index] "<message>"'' : guarda en el stash los ficheros del *working copy* | |
| | |
| | |
| | |
| === listar | |
| * ''git stash list'' : lista sesiones en el stash | |
| * ''git stash show stash@{indice}'' : muestra los ficheros del stash | |
| | |
| === recuperar | |
| * ''git stash pop'' : aplica los cambios en los ficheros guardados anteriormente y los saca del stash | |
| * ''git stash apply stash@{indice}'' : aplica los cambios en los ficheros del stash@{indice} (si hay más de uno) | |
| * ''git stash pop stash@{indice}'' : idem anterior pero elimina la sesión stash | |
| * ''git checkout stash@{indice} <fichero>'' : recupera del stash el fichero indicado | |
| | |
| === borrar | |
| * ''git stash drop'' : borra el primer elemento de la pila | |
| * ''git stash drop stash@{indice}'' : borra la sesión indicada | |
| <callout type="danger" title="borra todas las sesiones stash" icon="true">git stash clear</callout> | |
| |
| == tags | == tags |
| dos tipos: | [[tech:git:tags|]] |
| * lightweight: ligeros, hace referencia a un commit | |
| * annotated: añade más información, como autor, mensaje y fecha | |
| | |
| === añadir | |
| * ''git tag <tag>'' : crea tag ligero en el HEAD | |
| * ''git tag <tag> <commit>'' : crea tag ligero del commit concreto | |
| * ''git tag -a <tag> -m "mensaje"'' : crea tag anotado en el HEAD | |
| * ''git tag -a <tag> <commit> -m "mensaje"'' : idem en el commit indicado | |
| | |
| === listar / usar | |
| * ''git tag'' : muestra lista de tags | |
| * ''git show <tag>'' : información del tag | |
| * ''git checkout <tag>'' : se usa como referencia para movernos al commit asociado | |
| | |
| === sincronizar | |
| * ''git push <remote> refs/tags/<tag>'' : sube el tag al repositorio | |
| * ''git push %%--%%tags'' : sube todos los tags | |
| * ''git pull %%--%%tags'' : descarga todos los tags | |
| |
| == merge | == merge |
| fusión a 3 bandas entre los dos últimos commits de las dos ramas y el ancestro común | [[tech:git:merge|]] |
| | |
| 2 maneras de mostrar/trabajar: | |
| * ''no-ff'' -> no fastforward : nanera de trabajar por defecto de la mayoría de los repositorios, se muestran las ramas creadas con sus propios commits | |
| * ''ff'' -> fastforward : se integra en una línea, sin mostrar las particularidades de una rama que ha sido mergeada | |
| {{ :info:cursos:altran:pasted:20180731-040121.png?450 }} | |
| en ambos casos, al hacer el *merge* se trae todo el historial de esa rama | |
| | |
| === mergeando | |
| * ''git merge <rama>'' : merge de la rama actual con <rama> en formato fast-forward | |
| * ''%%--no-ff%%'' : en formato no-fastforward | |
| * ''git merge %%--%%squash <rama>'' : importa los cambios de la rama y los deja en *staged area* | |
| |
| == cherry-pick | == cherry-pick |
| permite importar un commit (de otra rama) a tu rama sin traer el histórico (solo el commit en sí) | [[tech:git:cherry-pick|]] |
| | |
| * ''git cherry-pick <commit>'' : trae el commit indicado a la rama actual | |
| * ''-e'' : edita el mensaje de commit | |
| * ''<commit>..<commit>'' : trae el rango de commits sucesivos indicados | |
| * ''<commit>^..<commit>'' : idem anterior, incluyendo el primer commit | |
| |
| == revert | == revert |
| revierte los cambios de un commit haciendo otro commit | [[tech:git:revert|]] |
| * ''git revert <commit>'' | |
| * ''-e'' : permite editar el mensaje de commit (acción por defecto en línea de comando) | |
| * ''%%--no-edit%%'' : lo contrario | |
| * ''git revert <commit>..<commit>'' : revierte desde el primero (no incluido) al último | |
| * ''-n'' : no realiza el commit ¿? | |
| * para incluir el primero, usar ''<commit>^'' | |
| |
| == reset | == reset |
| * ''git reset <commit>'' : elimina los commits posteriores a <commit> y deja las modificaciones en el **working copy** | [[tech:git:reset|]] |
| * ''git reset HEAD~1'' : elimina el último commit | |
| * ''git reset <commit>^'' : elimina el commit seleccionado y posteriores | |
| <callout type="danger" title="elimina commits posteriores y elimina completamente las modificaciones" icon="true">git reset --hard 'commit'</callout> | |
| |
| == rebase | == rebase |
| <callout type="warning" title="reescritura de la historia" icon="true"></callout> | [[tech:git:rebase|]] |
| | |
| * ''git rebase <rama>'' | |
| * ''-i'' : interactivo | |
| * ''git rebase -i HEAD~n'' : rabase interactivo de los últimos **n** commits | |
| * ''git pull %%--rebase%%'' : al recuperar del remoto, se actualiza la historia | |
| * ''git config %%--global%% pull.rebase true'' : establecerlo por defecto | |
| |
| === + info | === + info |