Как распечатать список моих псевдонимов git, т.е. что-то похожее на команду bash alias
?
Список Git псевдонимов
Ответ 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:
БОНУС: Если вы работаете с 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. Для других терминалов вам может понадобиться адаптировать экранирование.)
объяснение
-
!git config --get-regexp ^alias\\.
печатает все строки из git config, которые начинаются сalias.
-
sed -e s/^alias.//
удаляетalias.
с линии -
sed -e s/\\/\\ $(printf \"\\043\")--\\>\\/
заменяет первое вхождение пробела на\\ $(printf \"\\043\")--\\>
(который оценивается как#-->
). -
column -t -s $(printf \"\\043\")
форматирует все строки в равномерно распределенную таблицу столбцов. Символ$(printf \"\\043\")
который оценивается как#
, используется в качестве разделителя. -
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
.
Кроме того, очевидно, что ваши псевдонимы будут разными; это лишь некоторые из них, которые я настроил. (Возможно, вы найдете их полезными тоже.)