1

Я знаю, что могу запустить две команды подряд в командной строке:

git add -u && git commit --amend --no-edit

У меня также есть настройка псевдонимов с помощью doskey

doskey a=git add $*

Но как мне объединить несколько команд в один псевдоним doskey ?

doskey amend=git add -u && git commit --amend --no-edit

Это не удается, установив doskey к первой команде doskey amend=git add -u , а затем переходит немедленно выполнить git commit --amend --no-edit во время выполнения вместо сохранения составной команды в doskey псевдоним.

Я также попытался процитировать все это:

doskey amend="git add -u && git commit --amend --no-edit"

Но это тоже не удается, потому что он интерпретирует кавычки буквально:

'' git add -u && git commit --amend --no-edit "'не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

2 ответа2

3

Проблема в том, что && обозначает конец команды doskey а вторая команда git выполняется после нее.

Я пробовал другие синтаксические комбинации, но ни одна из них не позволяет анализировать && после расширения doskey , кроме:

doskey amend=cmd /c "git add -u && git commit --amend --no-edit"

Это запускает новую оболочку, которая неэффективна. Лучшим решением может быть поместить обе команды в командный файл (например, amend.cmd) и назначить макрос следующим образом:

doskey amend=amend.cmd
1

Это был первый результат в Google, но я нашел другой похожий вопрос с хорошими ответами.

1- экранировать символ амперсанда doskey foo=bar ^& baz

2 - использовать собственный разделитель команд doskey foo=bar $T baz

источник

Это чище и не открывает дополнительных командных окон.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .