¿Cómo puedo cambiar el nombre de un alijo de git?
Tengo un alijo con un nombre incorrecto. Me gustaría corregir el nombre para que sea exacto.
¿Cómo puedo cambiar el nombre de un alijo?
Supongamos que su lista de alijo se ve así:
$ git stash list
stash@{0}: WIP on master: Add some very important feature
stash@{1}: WIP on master: Fix some silly bug
Primero, debes eliminar la entrada oculta cuyo nombre deseas cambiar:
$ git stash drop stash@{1}
Dropped stash@{1} (af8fdeee49a03d1b4609f294635e7f0d622e03db)
Ahora simplemente agréguelo nuevamente con un nuevo mensaje usando sha de confirmación devuelto después de soltar:
$ git stash store -m "Very descriptive message" af8fdeee49a03d1b4609f294635e7f0d622e03db
Y eso es:
$ git stash list
stash@{0}: Very descriptive message
stash@{1}: WIP on master: Add some very important feature
Esta solución requiere git 1.8.4 o posterior y sí, también funciona con el directorio de trabajo sucio.
A menos que lo hagas manualmente o aportes una mejora a Git, puedes usar un alias:
git config --global alias.stash-rename '!_() { rev=$(git rev-parse $1) && git stash drop $1 || exit 1 ; git diff-index --quiet HEAD; s=$?; [ $s != 0 ] && git stash save "tmp stash from stash-rename"; git stash apply $rev && shift && git stash save "$@" && [ $s != 0 ] && git stash pop stash@{1}; }; _'
Uso: " git stash-rename <stash> [save options] [<message>]
"
Con [save options]
cualquier opción de git stash save
:[-p|--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all]
Ejemplo:
$ git stash list
stash@{0}: On master: Pep8 format
stash@{1}: On master: co other than master with local changes
stash@{2}: On master: tests with deployAtEnd
# Let's say I want to rename the stash@{2} adding an issue reference:
$ git stash-rename stash@{2} NXP-13971-deployAtEnd
$ git stash list
stash@{0}: On master: NXP-13971-deployAtEnd
stash@{1}: On master: Pep8 format
stash@{2}: On master: co other than master with local changes
Eso funcionará incluso si tiene cambios locales no preparados :)
EDITAR 22/02/2016
Script simplificado, créditos a qzb , https://stackoverflow.com/a/35549615/515973
git config --global alias.stash-rename '!_() { rev=$(git rev-parse $1) && git stash drop $1 || exit 1 ; git stash store -m "$2" $rev; }; _'
Uso: " git stash-rename <stash> [<message>]
"