Это создаст постоянный псевдоним 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файле.
@Ashitaka, попробуйте ограниченную версию, например git config --global alias.alias "! git config --get-regexp ^alias\.". В качестве альтернативы, убедитесь, git versionчто у вас есть текущая версия Git.
Acumenus
Это действительно отличная работа, и все это складывается в очень удобной манере!
UpAndAdam
Я верю, что вы можете избавиться от части "! Git", которая в основном отменяет друг друга. Смотрите заключительный раздел Git Aliases
Или просто git config -eи затем используйте свои глаза, чтобы найти [alias]раздел. Но фанаты git всегда, кажется, добавляют немного сценариев bash или сопоставления регулярных выражений для решения своих проблем, даже когда в этом нет необходимости :)
MatrixFrog
39
git config -eредактирует .git/configтолько файл. Но большинство моих псевдонимов определены в глобальном ~/.gitconfig.
Болдевин
21
Чтобы быть практичным, это должно быть git config --global alias.aliases config --get-regexp '^alias\.'"... а потомgit aliases
Дерек Грир
6
@DerekGreer вы пропустили "где-то
Джейк Бергер
147
Я создал псевдоним git (как ни странно) aliasименно для этой цели ... время от времени, если вы используете псевдонимы достаточно ...
Говоря о простоте запоминания, вы могли бы также создать aliasпсевдоним один раз, а потом забыть, что даже создали его.
Acumenus
3
Вы можете использовать -lв качестве удобного ярлыка для, --listно мне нравится идея создания псевдонима для перечисления псевдонимов.
ADTC
1
Хорошее решение, но лучше использовать grep с регулярным выражением для получения строк, начинающихся с псевдонима, если некоторые конфигурации каким-то образом содержат псевдоним ключевого слова:git config --list | grep -E '^alias'
MasterMind
28
Следующее работает под Linux, MacOSX и Windows (с msysgit).
Используйте git la для отображения псевдонимов в .gitconfig
Я слышал «скрипты bash»? ;)
Что касается «ненужной» части в комментарии выше, я в основном создал справочную страницу, похожую на обзор моих псевдонимов. Почему вся эта суета? Разве это не полное излишество?
Читать дальше...
Я установил такие команды в моем .gitconfig, разделив их так TAB=TAB:
и просто определил другой псевдоним, чтобы получить TAB=часть определенных псевдонимов. (Все остальные параметры не имеют вкладок до и после '=' в своем определении, только пробелы.)
Комментарии, не добавленные к псевдониму, также имеют TAB=====добавление, поэтому они отображаются после поиска.
Для лучшего просмотра я добавляю вывод 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.
Короткая **** выдержка из моих псевдонимов .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все, что нужно, чтобы получить помощь. Это всего лишь несколько символов, но как часто вы их набираете?
Я использую все следующее, конечно, только с ярлыками ...
Добавить
совершить
совершить --amend
сбросить --hard HEAD
От себя
получать
перебазироваться
проверять, выписываться
филиал
шоу-ветка (во многих вариациях)
shortlog
reflog
diff (в вариациях)
журнал (во многих вариациях)
положение дел
Показать
ноты
...
Это было только от макушки моей головы.
Мне часто приходится использовать git без графического интерфейса, так как многие команды 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 "..."в Windows,
или с псевдонимами bash gaa/ g aaили gca "..."/ g ca "..."в Linux и на Mac ...
Для моих нужд казалось разумным сделать такие команды git ...
... и для более легкого использования я просто помогал себе для менее используемых команд, поэтому мне не нужно каждый раз просматривать страницы руководства. Команды предопределены, и поиск их максимально прост.
Я имею в виду, мы ведь программисты? Заставить вещи работать так, как нам нужно, - это наша работа.
Вот дополнительный скриншот, это работает в Windows:
БОНУС: Если вы используете Linux или Mac, цветные справочные страницы могут вам немного помочь:
Я не могу заставить это работать с Windows. Выходы не заполнены, например,la = "!grep '\t=' ~/.gitconfig | less"
chwi
1
@Wilhelmsen: Возможно, вы копировали и вставляли вещи из списка выше? У вас действительно есть TABпредшественник каждый =? С пробелами это не сработает. У меня в окнах были пробелы .gitconfig, и как только я заменил их на одну вкладку, cmd.exe ведет себя как ожидалось.
sjas
2
перегрузка
оружие X
зависит от того, как часто вы используете что-то
sjas
16
Использование git varи фильтрация только тех, которые начинаются с alias:
Как уже упоминалось в других ответах, git config -lперечисляются все ваши данные конфигурации из вашего файла конфигурации. Вот частичный пример этого вывода для моей конфигурации:
Когда пользователь пытается использовать параметр ' --help' для команды с псевдонимом, выводится информация о псевдониме, как показано ниже:
$ git co --help
`git co' is aliased to `checkout'
Это кажется неправильным, поскольку пользователь имеет псевдонимы только ' co' и не ' git co'.
Это может быть даже неверно в тех случаях, когда пользователь использовал псевдоним типа ' tgit'.
$ tgit co --help
`git co' is aliased to `checkout'
( Примечание: это работает для меня в 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 \")
Это просто печатает символ #(гекс 043), который используется для разделения столбцов. Я использую этот небольшой хак, поэтому aliasesпсевдоним сам по себе не содержит буквально #персонажа. В противном случае он заменит эти #символы при печати.
Примечание . Измените его на другой символ, если вам нужны псевдонимы с буквенными #знаками.
Можете ли вы показать пример командной строки, как использовать это, наряду с примером вывода?
Acumenus
Встроенный к чему? Я не могу найти ничего подобного в msysgit. Где именно ты это нашел?
ADTC
2
Ни вызов этого напрямую из терминала, ни в качестве аргумента git не приводит к выводу значения. Во что конкретно это встроено?
-доброму асцифному
4
Работал для меня в Git Bash. $ __git_aliases возвращает список псевдонимов, хотя он не показывает, к чему они привязаны.
Jaypb
1
@ADTC строка кода в этом ответе является примером командной строки. $ Обозначает типичный Линукс строку терминала. Введите остальную часть этой строки в такой терминал и нажмите ENTERи получите список ваших псевдонимов. Работает как на Linux, так и на Windows (git bash), потому что он встроен в git. (Вероятно, это функция, которую git использует для разрешения псевдонимов, когда они используются в командной строке.)
Superole
1
Если вы знаете имя псевдонима, вы можете использовать --helpопцию для его описания. Например:
$ git sa --help
`git sa' is aliased to `stash'
$ git a --help
`git a' is aliased to `add'
Предостережения: заключите в кавычки регулярное выражение, чтобы предотвратить расширение оболочки в виде глобуса, хотя это не является технически необходимым, если / когда никакие файлы не соответствуют шаблону. Кроме того: любое регулярное выражение в порядке, за исключением того, что ^(начало шаблона) и $(конец шаблона) нельзя использовать; они подразумеваются. Предполагается, что вы не используете git-aliasизgit-extras .
Кроме того, очевидно, что ваши псевдонимы будут другими; это лишь некоторые из них, которые я настроил. (Возможно, вы тоже найдете их полезными.)
Ответы:
Этот ответ основывается на ответ по Джонни . Это применимо, если вы не используете
git-alias
отgit-extras
.В Linux запустите один раз:
Это создаст постоянный псевдоним git,
alias
который будет сохранен в вашем~/.gitconfig
файле. Используя его, вы получите список всех ваших псевдонимов git, примерно в том же формате, что и в~/.gitconfig
файле. Чтобы использовать его, введите:Применяются следующие соображения:
Чтобы псевдоним не появился в
alias
списке, как указано выше, добавляйте его| grep -v ^'alias '
перед закрывающей двойной кавычкой. Я не рекомендую это, так что пользователи не забывают, что командаalias
является псевдонимом и не является функцией git.Чтобы отсортировать псевдонимы в списке, добавьте их
| sort
перед закрывающей двойной кавычкой. Кроме того, вы можете сохранить псевдонимы в~/.gitconfig
отсортированном виде.Чтобы добавить псевдоним как общесистемный псевдоним, замените
--global
(для текущего пользователя) на--system
(для всех пользователей). Это обычно идет в/etc/gitconfig
файле.источник
alias.
в начале каждой строкиfatal: bad config
. Решение Git-extra работает для меня, хотя: github.com/tj/git-extras/blob/master/bin/git-aliasgit config --global alias.alias "! git config --get-regexp ^alias\."
. В качестве альтернативы, убедитесь,git version
что у вас есть текущая версия Git.источник
'^alias\.'
git config -e
и затем используйте свои глаза, чтобы найти[alias]
раздел. Но фанаты git всегда, кажется, добавляют немного сценариев bash или сопоставления регулярных выражений для решения своих проблем, даже когда в этом нет необходимости :)git config -e
редактирует.git/config
только файл. Но большинство моих псевдонимов определены в глобальном~/.gitconfig
.git config --global alias.aliases config --get-regexp '^alias\.'"
... а потомgit aliases
"
где-тоЯ создал псевдоним git (как ни странно)
alias
именно для этой цели ... время от времени, если вы используете псевдонимы достаточно ...$ git config --global alias.alias "config --get-regexp ^alias\."
Обратите внимание, регулярное выражение гарантирует, что строка начинается с
alias.
.источник
--system
вместо того, чтобы--global
что-то подобное, было бы более полезным на уровне системы, а не на уровне пользователя.alias = config --get-regexp ^alias\\.
.git config --global alias.alias "!git config --get-regexp ^alias\. | grep -Po '(?<=alias\.)\S*' | sort"
Другая альтернатива (чисто то, что мне легко запомнить):
git config --list | grep alias
источник
alias
псевдоним один раз, а потом забыть, что даже создали его.-l
в качестве удобного ярлыка для,--list
но мне нравится идея создания псевдонима для перечисления псевдонимов.git config --list | grep -E '^alias'
Следующее работает под Linux, MacOSX и Windows (с msysgit).
Используйте git la для отображения псевдонимов в .gitconfig
Я слышал «скрипты bash»? ;)
Что касается «ненужной» части в комментарии выше, я в основном создал справочную страницу, похожую на обзор моих псевдонимов. Почему вся эта суета? Разве это не полное излишество?
Читать дальше...
Я установил такие команды в моем .gitconfig, разделив их так TAB=TAB:
и просто определил другой псевдоним, чтобы получить TAB=часть определенных псевдонимов. (Все остальные параметры не имеют вкладок до и после '=' в своем определении, только пробелы.)
Комментарии, не добавленные к псевдониму, также имеют TAB=====добавление, поэтому они отображаются после поиска.
Для лучшего просмотра я добавляю вывод grep в меньше, например так:
базовая версия: (черный / белый)
Часть '
\t=
' совпадает TAB=.Чтобы получить еще лучший обзор того, какие псевдонимы у меня есть, и, поскольку я использую консоль bash, я покрасил вывод в цвета терминала:
расширенная версия: (цветная)
В основном так же, как и выше, добавлено только использование sed для получения цветовых кодов на выходе.
-R
Флаг менее необходим , чтобы цвет показан ниже.(Недавно я обнаружил, что длинные команды с полосой прокрутки под их окном не отображаются правильно на мобильных устройствах: их текст обрезан, а полоса прокрутки просто отсутствует. Это может быть в случае с последним фрагментом кода, сохраните это в будьте осторожны при просмотре фрагментов кода здесь, на ходу.)
Почему такая магия работает?
У меня около полумили псевдонимов, с учетом моих потребностей.
Кроме того, некоторые из них со временем меняются , так что лучше всего иметь актуальный список под рукой, разбирая .gitconfig.
Короткая **** выдержка из моих псевдонимов .gitconfig:
На моих рабочих станциях linux или mac также есть дополнительные псевдонимы в .bashrc, вроде как:
Таким образом, нет необходимости печатать
git help submodule
, не нужноgit h submodule
, простоgh submodule
все, что нужно, чтобы получить помощь. Это всего лишь несколько символов, но как часто вы их набираете?Я использую все следующее, конечно, только с ярлыками ...
Это было только от макушки моей головы.
Мне часто приходится использовать git без графического интерфейса, так как многие команды 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 "..."
в Windows,или с псевдонимами bash
gaa
/g aa
илиgca "..."
/g ca "..."
в Linux и на Mac ...Для моих нужд казалось разумным сделать такие команды git ...
... и для более легкого использования я просто помогал себе для менее используемых команд, поэтому мне не нужно каждый раз просматривать страницы руководства. Команды предопределены, и поиск их максимально прост.
Я имею в виду, мы ведь программисты? Заставить вещи работать так, как нам нужно, - это наша работа.
Вот дополнительный скриншот, это работает в Windows:
БОНУС: Если вы используете Linux или Mac, цветные справочные страницы могут вам немного помочь:
раскрашенные страницы руководства
источник
la = "!grep '\t=' ~/.gitconfig | less"
TAB
предшественник каждый=
? С пробелами это не сработает. У меня в окнах были пробелы.gitconfig
, и как только я заменил их на одну вкладку, cmd.exe ведет себя как ожидалось.Использование
git var
и фильтрация только тех, которые начинаются сalias
:источник
Как уже упоминалось в других ответах,
git config -l
перечисляются все ваши данные конфигурации из вашего файла конфигурации. Вот частичный пример этого вывода для моей конфигурации:Таким образом, мы можем вычеркнуть строки псевдонимов, используя
git config -l | grep alias
:Мы можем сделать это красивее, просто
cut
выделивalias.
часть каждой строки, оставив нас с этой командой:Какие отпечатки:
Наконец, не забудьте добавить это как псевдоним:
Наслаждайтесь!
источник
для окон:
источник
Я упомянул в июне 2018 года « обзорный список - наиболее часто используемые команды git, которые использует Git 2.18
--list-cmds=alias
( commit 3301d36 )», о которых Carej сообщает в своем ответе .В дополнение к тому или другому
git config --get-regexp alias
, вы можете объединить его вывод с темgit help
, чей вывод изменится с Git 2.14.x / 2.15:Смотрите коммит b3a8076 (12 сентября 2017 г.) от Kaartic Sivaraam (
sivaraam
) .(Слиты Junio C Hamano -
gitster
- в фиксации 5079cc8 , 25 Sep 2017)источник
Поиск или показать все псевдонимы
Добавить в свой
.gitconfig
под[alias]
:Тогда вы можете сделать
git aliases
- показать ВСЕ псевдонимыgit aliases commit
- только псевдонимы, содержащие "commit"источник
Я использую этот псевдоним в моем глобальном
~/.gitconfig
произвести следующий вывод
( Примечание: это работает для меня в 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 \")
Это просто печатает символ
#
(гекс 043), который используется для разделения столбцов. Я использую этот небольшой хак, поэтомуaliases
псевдоним сам по себе не содержит буквально#
персонажа. В противном случае он заменит эти#
символы при печати. Примечание . Измените его на другой символ, если вам нужны псевдонимы с буквенными#
знаками.источник
Есть встроенная функция ... попробуйте
перечисляет все псевдонимы :)
источник
$
Обозначает типичный Линукс строку терминала. Введите остальную часть этой строки в такой терминал и нажмитеENTER
и получите список ваших псевдонимов. Работает как на Linux, так и на Windows (git bash), потому что он встроен в git. (Вероятно, это функция, которую git использует для разрешения псевдонимов, когда они используются в командной строке.)Если вы знаете имя псевдонима, вы можете использовать
--help
опцию для его описания. Например:источник
Начиная с Git 2.18 вы можете использовать
git --list-cmds=alias
источник
Еще один
git
псевдоним (называетсяalias
), который печатает псевдонимы git: добавьте следующее в ваш[alias]
раздел gitconfig :Пример использования, дающий полное имя псевдонима (точно совпадает с именем псевдонима: т.е.
^foobar$
), и просто показывает значение:Или, дайте регулярное выражение, которое показывает все совпадающие псевдонимы и значения:
Предостережения: заключите в кавычки регулярное выражение, чтобы предотвратить расширение оболочки в виде глобуса, хотя это не является технически необходимым, если / когда никакие файлы не соответствуют шаблону. Кроме того: любое регулярное выражение в порядке, за исключением того, что
^
(начало шаблона) и$
(конец шаблона) нельзя использовать; они подразумеваются. Предполагается, что вы не используетеgit-alias
изgit-extras
.Кроме того, очевидно, что ваши псевдонимы будут другими; это лишь некоторые из них, которые я настроил. (Возможно, вы тоже найдете их полезными.)
источник