Псевдоним за „git stash drop“ в zsh

Искам да направя alias за пускане на git stash в zsh shell. Скривалището № който искам да премахна, трябва да бъде предаден като аргумент на моето извикване на функция.

Опитах по-долу, но се проваля -

function gd() {
    if [ -n "$1" ]
    then
        git stash drop "$1"
    else
        echo 'Enter stash no to drop'
    fi
}

Дава ми грешка по-долу -

fatal: ambiguous argument '0': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Изглежда, че не предавам аргумента правилно и той се третира като низ.

Как мога да накарам това да работи?


person Shantanu Tomar    schedule 08.12.2019    source източник
comment
Как всъщност се обадихте на gd?   -  person chepner    schedule 09.12.2019


Отговори (2)


@ShantanuTomar : Вие не дефинирате никакъв псевдоним, което на първо място не е лошо, защото функцията така или иначе е по-гъвкава, но ако наистина искате да имате alias, командата за дефинирането му ще бъде

 alias gd='git stash drop'

Освен това дефиницията на функцията ви е наред, въпреки че не е необходимо да цитирате вашите променливи. Това обаче не вреди.

Съобщението за грешка казва, че предоставеното от вас скривалище не съществува. Използвайте

git stash list

за да получите списък с наличните скривалища.

person user1934428    schedule 09.12.2019

Опитвам

git stash drop $1

Но, както беше коментирано, няма да има никакво преобразуване, извършено само от zsh.

Така че не забравяйте да използвате достатъчно скорошен Git:

  • git stash с помощта на числа (тогава интерпретирани като stash@{n}) се поддържа само от Git 2.11 (Q4 2016)
  • имаше грешка, свързана с git stash и неговия индекс, поправена в Git 2.23
person VonC    schedule 08.12.2019
comment
$1 е низ и в двата случая. Поставянето в кавички е необходимо, ако името на клона съдържа знаци, които обвивката може да обработи, преди git да го види; не прави никакъв тип преобразуване. - person chepner; 09.12.2019
comment
@chepner: Не в този случай, защото имаме Zsh. Дори $1 да съдържа заместващи символи, те няма да бъдат оценени, ако не са цитирани. - person user1934428; 09.12.2019
comment
Това зависи от вашите настройки на обвивката. И в двата случая обаче липсата на кавички не кара обвивката да го третира като цяло число, защото дори zsh няма целочислен тип данни: всичко е низове. - person chepner; 09.12.2019