Как я могу установить псевдоним для "git last", который принимает число в качестве аргумента?

В Pro Git Скотт Чакон приводит несколько хороших примеров псевдонимов, которые могут быть полезны, в том числе тот, который показывает последний коммит: git last что эквивалентно log -1 HEAD:

git config --global alias.last 'log -1 HEAD'

Это покажет что-то вроде этого:

$ git last
commit 66938dae3329c7aebe598c2246a8e6af90d04646
Author: Josh Goebel <dreamer3@example.com>
Date:   Tue Aug 26 19:48:51 2008 +0800

    test for current head

Я прочитал несколько похожих вопросов о переполнении стека, например, передал аргумент команде псевдонима Git, но до сих пор не смог понять это.

Лучшее, что я мог придумать, это изменить мой .gitconfig файл следующим образом:

[alias]
    last = log -1 HEAD
    mylast = "!sh -c 'echo /usr/local/bin/git last -$0 HEAD'"

Затем, если я запустите это в командной строке:

$ git mylast 12

Я получаю это:

/usr/local/bin/git last -12 HEAD

Это на самом деле выглядит правильно. Но если я уберу echo впереди он просто висит, как будто ждет ввода. Я пробовал переключаться $0 за $1 но это тоже не помогло.

Что я делаю неправильно?

Кроме того, есть ли способ настроить его так, чтобы, если я просто наберу git last без номера тогда по умолчанию будет "1"?

1 ответ

Решение
last = !sh -c 'git log "-${1:-1}" HEAD' -

Это использует преимущества синтаксиса по умолчанию для интерполяции параметров оболочки, ${var:-default} который заменяет default если переменная var не установлен.

Другие вопросы по тегам