Как мне псевдоним команды в Git?

Я видел скринкаст, где кто-то получил

git st
git ci

работать. Когда я делаю это, я получаю сообщение об ошибке, спрашивая меня, имел ли я в виду что-то еще.
Будучи мерзавцем, мне нужно знать, что ты должен сделать, чтобы это сделать?

26 ответов

Решение

В основном вам просто нужно добавить строки в ~/.gitconfig

[alias]
    st = status
    ci = commit -v

Или вы можете использовать команду псевдонима git config:

$ git config --global alias.st status 

В unix используйте одинарные кавычки, если у псевдонима есть пробел:

$ git config --global alias.ci 'commit -v'

В Windows используйте двойные кавычки, если у псевдонима есть пробел или аргумент командной строки:

c:\dev> git config --global alias.ci "commit -v"

Команда alias даже принимает функции в качестве параметров. Посмотрите на псевдонимы.

Как уже говорили другие, правильный способ добавить псевдонимы git в вашем глобальном .gitconfig файл либо путем редактирования ~/.gitconfig или с помощью git config --global alias.<alias> <git-command> команда

Ниже приведена копия раздела псевдонимов моего ~/.gitconfig файл:

[alias]
    st = status
    ci = commit
    co = checkout
    br = branch
    unstage = reset HEAD --
    last = log -1 HEAD

Кроме того, если вы используете bash, я бы рекомендовал настроить завершение bash, скопировав git-completion.bash в свой домашний каталог и поиска его из вашего ~/.bashrc, (Мне кажется, я узнал об этом из онлайн-книги о Pro Git.) В Mac OS X я выполнил это с помощью следующих команд:

# Copy git-completion.bash to home directory
cp usr/local/git/contrib/completion/git-completion.bash ~/

# Add the following lines to ~/.bashrc
if [ -x /usr/local/git/bin/git ]; then
    source ~/.git-completion.bash
fi

Примечание: завершение bash будет работать не только для стандартных команд git, но и для ваших псевдонимов git.

Наконец, чтобы действительно сократить количество нажатий клавиш, я добавил следующее ~/.bash_aliases файл, полученный из ~/.bashrc:

alias gst='git status'
alias gl='git pull'
alias gp='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -v'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'

Я думаю, что самый полезный gitconfig такой: мы всегда используем функцию 20% в git, вы можете попробовать "g ll", это удивительно, детали:

[user]
    name = my name
    email = me@example.com
[core]  
    editor = vi 
[alias]
    aa = add --all
    bv = branch -vv
    ba = branch -ra
    bd = branch -d
    ca = commit --amend
    cb = checkout -b
    cm = commit -a --amend -C HEAD
    ci = commit -a -v
    co = checkout
    di = diff
    ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
    ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
    ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
    mm = merge --no-ff
    st = status --short --branch
    tg = tag -a 
    pu = push --tags
    un = reset --hard HEAD  
    uh = reset --hard HEAD^
   [color]  
    diff = auto  
    status = auto  
    branch = auto 
   [branch]  
    autosetuprebase = always

Вам нужно git config alias команда. Выполните следующее в Git-репозитории:

git config alias.ci commit

Для глобального псевдонима:

git config --global alias.ci commit

Вы также можете объединять команды, если используете '!' Оператор для порождения оболочки:

aa = !git add -A && git status

Это добавит все файлы и даст вам отчет о состоянии с $ git aa,

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

alias = config --get-regexp ^alias\\.

Тогда быстрый $ git alias дает вам ваши текущие псевдонимы и что они делают.

Я создал псевдоним dog для отображения лог-графика:

git config --global alias.dog "log --oneline --graph --all --decorate"

И используйте его следующим образом:

 git dog

Это сработало для меня:

bco = "!f(){ git branch ${1} && git checkout ${1}; };f"

на:

$ git --version

git version 1.7.7.5 (Apple Git-26)

Для меня (я использую Mac с терминалом) работал только тогда, когда я добавил на .bash_profile и открыл еще одну вкладку, чтобы загрузить изменения:

alias gst="git status"
alias gd="git diff"
alias gl="git log"
alias gco="git commit"
alias gck="git checkout"
alias gl="git pull"
alias gpom="git pull origin master"
alias gp="git push"
alias gb="git branch"

Follwing - это 4 git-ярлыка или псевдонима, которые вы можете использовать, чтобы сэкономить время.

Откройте командную строку и введите следующие 4 команды и используйте сочетания клавиш после.

git config --global alias.co checkout  
git config --global alias.ci commit    
git config --global alias.st status    
git config --global alias.br branch  

Теперь проверь их!

$ git co              # use git co instead of git checkout
$ git ci              # use git ci instead of git commit
$ git st              # use git st instead of git status
$ git br              # use git br instead of git branch

Это создаст псевдоним st за status:

git config --add alias.st status

Добавьте следующие строки в ваш ~/.gitconfig в вашем домашнем каталоге

[alias]
# one-line log
l = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative

a = add
ap = add -p
c = commit --verbose
ca = commit -a --verbose
cm = commit -m
cam = commit -a -m
m = commit --amend --verbose

d = diff
ds = diff --stat
dc = diff --cached

s = status -s
co = checkout
cob = checkout -b
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"

# list aliases
la = "!git config -l | grep alias | cut -c 7-"

Как только это будет сделано, вы можете сделать git a вместо git add например. То же самое относится и к другим командам под заголовком псевдонима.

Для тех, кто хочет выполнять команды оболочки в псевдониме git, например:

$ git pof

В моем терминале будет принудительно вставлять текущую ветку в исходное хранилище:

[alias]
    pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2)

Где

$(git branch | grep \\* | cut -d ' ' -f2)

Команда возвращает текущую ветку.

Так что это ярлык для ручного ввода названия ветви:

git push origin -f <current-branch>

Вы можете использовать псевдонимы как git, так и не git. Похоже, это было добавлено в версии 1.5. Фрагмент из git config --help Страница версии 2.5.4 на моем Mac показывает:

Если расширение псевдонима начинается с восклицательного знака, оно будет рассматриваться как команда оболочки.

Например, в вашем глобальном .gitconfig файл, который вы можете иметь:

[alias]
    st = status
    hi = !echo 'hello'

А затем запустите их:

$ git hi
hello
$ git st
On branch master

...

Я добавил все команды aliases в .profile в каталог пользователя (vim ~ / .profile).

      alias gs='git status'
alias gp='git pull'
alias gph='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -m'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'
alias gfo='git fetch origin'

Затем я добавил исходную команду в bash, а также в оболочку zsh.

В оболочке bash (vim ~ / .bashrc)


В оболочке zsh (vim ~ / .zshrc)

      source ~/.profile

Настройка одной линии

$ git config --global alias.co checkout && git config --global alias.br branch && git config --global alias.ci commit && git config --global alias.st status && git config --global alias.unstage 'reset HEAD --' && git config --global alias.last 'log -1 HEAD'

Применение:

$ git st
$ git co
$ git br
$ git ci
$ git last
$ git unstage <file | dir>

Все установится в:

$ cat ~/.gitconfig

[user]
    name = Sample User
    email = sample@gmail.com
[core]
    filemode = false
    compression = 1
    quotepath = off
    ignorecase = false
[color]
    ui = auto
[alias]
    co = checkout
    br = branch
    ci = commit
    st = status
    last = log -1 HEAD
    unstage = reset HEAD --

Надеюсь, это быстрее.

Чтобы создать любой псевдоним в Git, используйте следующие команды:

      git config --local alias.s status

git config --local alias.c commit
      git s

On branch master

nothing to commit, working tree clean

      git status

On branch master

nothing to commit, working tree clean

 $ git update
git: "update" не является командой git. Смотрите "git --help".

Вы имели в виду это?
    обновление-ссылок

$ git config --global alias.update 'pull -v'

$ git update
От git://git.kernel.org/pub/scm/git/git
 = [до даты]      html       -> origin/html
 = [в актуальном состоянии] maint -> origin / maint
 = [в курсе] человек -> происхождение / человек
 = [в актуальном состоянии] мастер -> источник / мастер
 = [в курсе] следующий -> происхождение / следующий
 = [в актуальном состоянии] pu -> origin / pu
 = [в актуальном состоянии] todo -> origin / todo
Уже в курсе. 

Вы можете установить собственные псевдонимы git, используя конфигурацию git. Вот синтаксис:

git config --global alias.<aliasName> "<git command>"

Например, если вам нужен псевдоним для отображения списка файлов, которые имеют конфликты слияния, выполните:

git config --global alias.conflicts "diff --name-only --diff-filter=U"

Теперь вы можете использовать приведенную выше команду только с использованием "конфликтов":

git conflicts
# same as running: git diff --name-only --diff-filter=U

Включите несколько файлов псевдонимов в свой .gitconfig

Я предлагаю использовать .gitconfig включить для своих псевдонимов. Как только вы начнете создавать псевдонимы, у вас, вероятно, их будет много. Скорее всего, вы захотите поделиться ими с другими. Помещение их в специальный файл упрощает совместное использование. Ваша команда может даже использовать репозиторий git для хранения общих псевдонимов. И, конечно же, некоторые псевдонимы, которыми вы не захотите делиться, поэтому храните их в личном файле псевдонимов.

[include]
    path=src/dotfiles/.gitaliases

[include]
    path=src/team-utils/gitaliases

[include]
    path=.gitaliases.private

Просто чтобы получить псевдонимы даже короче, чем стандартный способ git config, упомянутый в других ответах, я создал пакет npm mingit (npm install -g mingit), чтобы большинство команд превратились в 2 символа вместо 2 слов. Вот примеры:

g a .                   // git add .
g b other-branch        // git branch other-branch
g c "made some changes" // git commit -m "made some changes"
g co master             // git checkout master
g d                     // git diff
g f                     // git fetch
g i                     // git init 
g m hotfix              // git merge hotfix
g pll                   // git pull
g psh                   // git push
g s                     // git status

и другие команды будут такими же короткими. Это также сохраняет завершения bash. Пакет добавляет функцию bash к вашим точечным файлам, работает на OSX, Linux и Windows. Кроме того, в отличие от других псевдонимов, это псевдонимы git -> g а также второй параметр.

Скриншот PFA моего файла.gitconfig

со следующими псевдонимами

[alias]
    cb = checkout branch
    pullb = pull main branch

Если вы хотите альтернативу ~/.gitconfig Опция и открыть для копания немного больше, другой вариант - написать полностью пользовательские команды git, обернув их в пакет глобального узла.

В вашем package.json вы определяете команду root (пример: gt), а затем отфильтруйте конкретные команды для выполнения правильных команд git. Например, git checkout my-branch может быть gt co mybranch,

Пакет "christian-git" на npm использует этот метод: https://github.com/alexmacarthur/christian-git

Здесь даются псевдонимы. Даже если здесь есть отличные ответы, я добавил их, потому что они отличаются в Windows и Linux.

Кажется, что в различных ответах, приведенных здесь, отсутствует один случай. Т.е. что делать, если параметры, заданные для псевдонима, нужно вставить где-то в середине команды. Напримерgit grep hello -- :/ищет hello , начиная с корневой папки текущего репозитория. Для систем Linux мы можем создать псевдоним, например

      git config --global alias.ggrep '!git grep "$@" -- :/'

такой, чтоgit ggrep helloсделаю то же самое.

alias s="git status"

Ваш указательный палец простит вам всю боль, которую вы ему перенесли на протяжении всей жизни.

Другая возможность для окон - иметь каталог, заполненный файлами.bat, в которых есть ваши ярлыки. Имя файла является ярлыком, который будет использоваться. Просто добавьте каталог в переменную окружения PATH, и вы получите все ярлыки в окне cmd.

Например (gc.bat):

git commit -m %1

Затем вы можете выполнить следующую команду в консоли:

gc "changed stuff"

Причина, по которой я добавляю это как ответ, заключается в том, что при использовании этого вы не ограничены git ... только команды.

Другие вопросы по тегам