Git alias игнорирует глобальные настройки - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть настройка relativePaths для git status, установленная в ~/.gitconfig:

[status]
  relativePaths = true

Затем псевдоним git определяется следующим образом:

st = !git status

Когда язвоните git status, настройка relativePaths применяется, но когда я вызываю псевдоним, это не так.

Как мне заставить это работать?

ПРИМЕЧАНИЕ: В моем псевдониме я на самом деле перенаправляю результат с git status на grep, поэтому мне нужно использовать синтаксис оболочки !.Я исключил это из этого примера, потому что без него поведение такое же

1 Ответ

0 голосов
/ 23 ноября 2018

Параметр, вероятно, применяется, который вы можете проверить с помощью псевдонима, например:

[alias]
    check-status-rel = config --global --get status.relativePaths

Причина, по которой он не работает для вас, описана в man git-config, во втором абзацеописание параметров alias.*:

   alias.*
       Command aliases for the git(1) command wrapper - e.g. after
       defining "alias.last = cat-file commit HEAD", the invocation "git
       last" is equivalent to "git cat-file commit HEAD". To avoid
       confusion and troubles with script usage, aliases that hide
       existing Git commands are ignored. Arguments are split by spaces,
       the usual shell quoting and escaping is supported. A quote pair or
       a backslash can be used to quote them.

       If the alias expansion is prefixed with an exclamation point, it
       will be treated as a shell command. For example, defining
       "alias.new = !gitk --all --not ORIG_HEAD", the invocation "git new"
       is equivalent to running the shell command "gitk --all --not
       ORIG_HEAD". Note that shell commands will be executed from the
       top-level directory of a repository, which may not necessarily be
       the current directory.  GIT_PREFIX is set as returned by running
       git rev-parse --show-prefix from the original current directory.
       See git-rev-parse(1).

Короче говоря, псевдонимы Git, которые являются командами оболочки, всегда выполняются в корневом каталоге хранилища.

Редактировать: Очевидно, вы можете простоcd в каталог перед запуском команд:

[alias]
    st = "!cd \"$GIT_PREFIX\" && git status"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...