Список Git псевдонимов

Как распечатать список моих псевдонимов git, т.е. что-то похожее на команду bash alias?

Ответ 1

Этот ответ основан на ответе Джонни. Это применимо, если вы не используете git-alias из git-extras.

В Linux запустите один раз:

git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"

Это создаст постоянный псевдоним git с именем alias, который будет сохранен в вашем файле ~/.gitconfig. Используя его, вы получите список всех ваших псевдонимов git, примерно в том же формате, что и в файле ~/.gitconfig. Чтобы использовать его, введите:

$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /

Применяются следующие соображения:

  • Чтобы предотвратить появление псевдонима alias, как указано выше, добавьте | grep -v ^'alias ' непосредственно перед закрывающей двойной кавычкой. Я не рекомендую этого, поэтому пользователи не забывают, что команда alias является псевдонимом и не является функцией git.

  • Чтобы отсортировать перечисленные псевдонимы, добавьте | sort непосредственно перед закрывающей двойной кавычкой. Кроме того, вы можете сохранить псевдонимы в ~/.gitconfig отсортированными.

  • Чтобы добавить псевдоним в качестве общесистемного псевдонима, замените --global (для текущего пользователя) на --system (для всех пользователей). Обычно это происходит в файле /etc/gitconfig.

Ответ 2

$ git config --get-regexp alias

Ответ 3

Я создал псевдоним git (как ни странно) alias для этой цели... время от времени удобен, если вы достаточно используете псевдонимы...

$ git config --global alias.alias "config --get-regexp ^alias\."

Обратите внимание, что регулярное выражение гарантирует, что строка начинается с alias..

Ответ 4

Другая альтернатива (чисто то, что мне легко запомнить):

git config --list | grep alias

Ответ 5

Следующие действия выполняются под Linux, MacOSX и Windows (с msysgit).

Используйте git la для отображения псевдонимов в .gitconfig

Я слышал "bash scripting"?;)

О части "не нужно" в комментарии выше, я в основном создал справочную страницу, такую ​​как обзор для моих псевдонимов. Почему все суеты? Разве это не полный перебор?

Читайте дальше...

Я установил такие команды в моем .gitconfig, разделенном как TAB = TAB:

[alias]
        alias1            =            foo -x -y --z-option
        alias2            =            bar -y --z-option --set-something

и просто определил другой псевдоним для grep TAB = части определенных псевдонимов. (Все остальные параметры не имеют вкладок до и после "=" в их определении, просто пробелы.)

Комментарии, не добавленные к псевдониму, также имеют добавленный TAB = = = = =, поэтому они отображаются после grepping.

Для лучшего просмотра я собираю вывод grep на меньшее, например:

базовая версия: (черный/белый)

  #.gitconfig
  [alias]
        # use 'git h <command>' for help, use 'git la' to list aliases  =====
        h     =     help #... <git-command-in-question>
        la    =     "!grep '\t=' ~/.gitconfig | less" 

Часть '\t=' соответствует TAB =.

Чтобы получить более четкое представление о том, какие псевдонимы у меня есть, и поскольку я использую консоль bash, я покрасил вывод с помощью цветов терминала:

  • все '=' печатаются красным цветом
  • все '#' печатаются зеленым цветом

расширенная версия: (цветная)

       la      =       "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"

В основном то же самое, что и выше, добавляется только использование sed, чтобы получить цветовые коды в выходной файл.

Флаг -R меньше необходим для получения меньшего количества цветов.

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


Зачем нужна такая магия?

У меня есть полмили псевдонимов, с учетом моих потребностей.
Кроме того, некоторые из них меняются со временем, поэтому после того, как лучшая идея иметь обновленный список под рукой, разбор .gitconfig.

A **** короткий **** отрывок из моих псевдонимов .gitconfig:

    #  choose       =====
    a       =       add #...
    aa      =       add .
    ai      =       add -i
    #  unchoose     =====
    rm      =       rm -r #... unversion and delete
    rmc     =       rm -r --cached #... unversion, but leave in working copy
    #  do   =====
    c       =       commit -m #...
    fc      =       commit -am "fastcommit"
    ca      =       commit -am #...
    mc      =       commit # think 'message-commit'
    mca     =       commit -a
    cam     =       commit --amend -C HEAD # update last commit
    #  undo =====
    r       =       reset --hard HEAD
    rv      =       revert HEAD

В моих рабочих станциях Linux или Mac также существуют дополнительные псевдонимы в .bashrc, вроде:

#.bashrc
alias g="git"
alias gh="git h"
alias gla="git la"
function gc { git c "$*" } # this is handy, just type 'gc this is my commitmessage' at prompt

Таким образом, не нужно вводить git help submodule, не нужно git h submodule, просто gh submodule - это все, что необходимо для получения справки. Это всего лишь несколько персонажей, но как часто вы их вводите?

Я использую все следующие, конечно только с ярлыками...

  • добавить
  • совершить
  • commit --amend
  • reset --hard HEAD
  • толчок
  • извлечь
  • перебазироваться
  • фотографии
  • филиал
  • show-branch (во многих вариациях)
  • shortlog
  • reflog
  • diff (в вариантах)
  • log (во многих вариациях)
  • Статус
  • показать
  • заметки
  • ...

Это было просто с моей головы.

Мне часто приходится использовать git без gui, так как многие команды git не реализованы должным образом ни в одном из графических интерфейсов. Но каждый раз, когда я использую их, это в основном аналогично.

В разделе "не реализовано", упомянутом в последнем абзаце:
Мне еще нужно найти что-то, что сравнивается с этим в графическом интерфейсе:
sba = show-branch --color=always -a --more=10 --no-name - показать все локальные и удаленные ветки, а также коммиты, которые у них есть в них
ccm = "!git reset --soft HEAD~ && git commit" - изменить последнее сообщение фиксации

С точки зрения, более простой:
Как часто вы вводите git add . или git commit -am "..."? Не считая даже остальных...
Как работать, например, git aa или git ca "..." в окнах,
или с bash алиасами gaa/g aa или gca "..."/g ca "..." в linux и на mac...

Для моих нужд это казалось разумным, чтобы адаптировать команды git как это...
... и для более простого использования я просто помог себе для менее используемых команд, поэтому мне не нужно каждый раз проконсультироваться с man-страницами. Команды предопределены, и просмотр их как можно проще.

Я имею в виду, мы все-таки программисты? Получение работы, как мы в ней нуждаемся, является нашей работой.

Вот еще скриншот, это работает в Windows:

script working with cmd.exe

БОНУС: Если вы работаете с linux или mac, цветные справочные страницы могут помочь вам немного:

раскрашенные страницы руководства

Ответ 6

Используя git var и фильтруя только те, которые начинаются с alias:

git var -l | grep -e "^alias"

Ответ 7

Как упоминалось в других ответах, git config -l перечисляет все ваши данные конфигурации из вашего файла конфигурации. Вот частичный пример этого вывода для моей конфигурации:

...
alias.force=push -f
alias.wd=diff --color-words
alias.shove=push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show origin | grep \w*\s*(new^|tracked) -E
core.repositoryformatversion=0
core.filemode=false
core.bare=false
...

Таким образом, мы можем выровнять строки псевдонимов, используя git config -l | grep alias:

alias.force=push -f
alias.wd=diff --color-words
alias.shove=push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show origin | grep \w*\s*(new^|tracked) -E

Мы можем сделать это красивее, просто cut вычеркивая часть alias. каждой строки, оставив нам эту команду:

git config -l | grep alias | cut -c 7-

Какие принты:

force=push -f
wd=diff --color-words
shove=push -f
gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
branches=!git remote show origin | grep \w*\s*(new^|tracked) -E

Наконец, не забудьте добавить это как псевдоним:

git config --global alias.la "!git config -l | grep alias | cut -c 7-"

Наслаждайтесь!

Ответ 8

для окон:

git config --list | findstr "alias"

Ответ 9

Поиск или отображение всех псевдонимов

Добавьте к .gitconfig под [alias]:

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

Затем вы можете сделать

  • git aliases - показать ВСЕ псевдонимы
  • git aliases commit - только псевдонимы, содержащие "commit"

Ответ 10

Я упомянул в июне 2018 года " обзорный список - наиболее часто используемые команды git " в Git 2.18 "использовать --list-cmds=alias (commit 3301d36)", о которых Carej сообщает в своем ответе.

 git --list-cmds=alias

В дополнение к этому или git config --get-regexp alias вы можете комбинировать его вывод с git help, чей вывод изменится с Git 2.14.x/2.15:

" git help co " теперь говорит " co is aliased to... ", а не " git co is ".

См. Коммит b3a8076 (12 сентября 2017 г.) от Kaartic Sivaraam (sivaraam).
(Объединено Junio C Hamano - gitster - в коммите 5079cc8, 25 сентября 2017 г.)

help: измените сообщение, чтобы быть более точным

Когда пользователь пытается использовать --help " --help " для псевдонима команды, информация о псевдониме печатается, как показано ниже:

$ git co --help
'git co' is aliased to 'checkout'

Это кажется неправильным, поскольку пользователь имеет псевдонимы только " co ", а не " git co ".
Это может быть даже неправильно в тех случаях, когда пользователь использовал псевдоним, например, " tgit ".

$ tgit co --help
'git co' is aliased to 'checkout'

Ответ 11

Я использую этот псевдоним в моем глобальном ~/.gitconfig

# ~/.gitconfig

[alias]
    aliases = !git config --get-regexp ^alias\\. | sed -e s/^alias.// -e s/\\ /\\ $(printf \"\\043\")--\\>\\ / | column -t -s $(printf \"\\043\") | sort -k 1

произвести следующий вывод

$ git aliases
aliases   --> !git config --get-regexp ^alias\. | sed -e s/^alias.// -e s/\ /\ $(printf "\043")--\>\ / | column -t -s $(printf "\043") | sort -k 1
ci        --> commit -v
cim       --> commit -m
co        --> checkout
logg      --> log --graph --decorate --oneline
pl        --> pull
st        --> status
...       --> ...

(Примечание: это работает для меня в git bash на Windows. Для других терминалов вам может понадобиться адаптировать экранирование.)


объяснение

  1. !git config --get-regexp ^alias\\. печатает все строки из git config, которые начинаются с alias.
  2. sed -e s/^alias.// удаляет alias. с линии
  3. sed -e s/\\/\\ $(printf \"\\043\")--\\>\\/ заменяет первое вхождение пробела на \\ $(printf \"\\043\")--\\> (который оценивается как #-->).
  4. column -t -s $(printf \"\\043\") форматирует все строки в равномерно распределенную таблицу столбцов. Символ $(printf \"\\043\") который оценивается как #, используется в качестве разделителя.
  5. sort -k 1 сортирует все строки на основе значения в первом столбце

$ (printf\"\ 043 \")

Это просто печатает символ # (hex 043), который используется для разделения столбцов. Я использую этот небольшой хак, чтобы aliases псевдонима сам по себе не содержал символ #. В противном случае он заменит эти символы # при печати. Примечание. Измените его на другой символ, если вам нужны псевдонимы с буквенными символами #.

Ответ 12

Существует встроенная функция... try

$ __git_aliases

перечислены все псевдонимы:)

Ответ 13

Если вы знаете имя псевдонима, вы можете использовать опцию --help для его описания. Например:

$ git sa --help
`git sa' is aliased to `stash'

$ git a --help
`git a' is aliased to `add'

Ответ 14

Начиная с git 2.18 вы можете использовать git --list-cmds=alias

Ответ 15

Еще один псевдоним git (называемый alias), который печатает алиасы git: добавьте следующее в раздел gitconfig [alias]:

[alias]
    # lists aliases matching a regular expression
    alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"

Пример использования, указав полное имя псевдонима (точно совпадает имя псевдонима: i.e., ^foobar$) и просто показывает значение:

$ git alias st
alias.st status -s

$ git alias dif
alias.dif diff

Или дайте regexp, в котором отображаются все совпадающие псевдонимы и значения:

$ git alias 'dif.*'
alias.dif diff
alias.difs diff --staged
alias.difh diff HEAD
alias.difr diff @{u}
alias.difl diff --name-only

$ git alias '.*ing'
alias.incoming !git remote update -p; git log [email protected]{u}
alias.outgoing log @{u}..

Предостережения: укажите регулярное выражение, чтобы предотвратить расширение оболочки в виде глобуса, хотя это не технически необходимо, если/когда никакие файлы не соответствуют шаблону. Также: любое регулярное выражение отлично, за исключением ^ (запуск шаблона) и $ (конец шаблона) не может быть использован; они подразумеваются. Предполагает, что вы не используете git-alias из git-extras.

Кроме того, очевидно, что ваши псевдонимы будут разными; это лишь некоторые из них, которые я настроил. (Возможно, вы найдете их полезными тоже.)