¿Cómo puedo cambiar el nombre de un alijo de git?

Resuelto mikemaccana asked hace 10 años • 12 respuestas

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?

mikemaccana avatar Sep 19 '14 16:09 mikemaccana
Aceptado

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.

qzb avatar Feb 22 '2016 09:02 qzb

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>]"

Julien Carsique avatar Sep 19 '2014 13:09 Julien Carsique