Як я можу псевдоніми команд в git?


619

Я побачив скріншот, де хтось потрапив

git st
git ci

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


1
Ви також можете побачити це тут git-scm.com/book/en/v2/Git-Basics-Git-Aliases
JayRizzo

Дивіться також інші питання по більш розширеному використанню мерзотника псевдоніма тут: stackoverflow.com/questions/46528736 / ...
NeilG

Відповіді:


977

В основному вам потрібно просто додати рядки ~/.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 навіть приймає функції як параметри. Погляньте на псевдоніми .


86
Я настійно рекомендую використовувати git config --globalдля розміщення псевдонімів ~/.gitconfigзамість .git/configпоточного сховища.
Каскабель

27
Я віддаю перевагу настройки stв status -s(короткий статус)
HASEN

20
Це справді приголомшливо. Я шукав цього. Просто голова вгору, якщо у вас є команда з пробілами, яку ви повинні використовувати, 'якgit config --global alias.sr 'svn rebase'
Амір Рамінфар

1
@HellishHeat Ці псевдоніми створені git, для git. Якщо ви хочете псевдоніми для іншої системи командного рядка, вам доведеться шукати, як це зробити для цієї системи. (Ви, здається, використовуєте систему, схожу на Unix, і я випадково знаю, що створювати псевдоніми в Unices досить просто. Хоча синтаксис інший. Спробуйте пошук в Google.)
Майкл Дорст

17
Ще одна голова вгору, якщо ви використовуєте Git у командному рядку Windows, тоді вам потрібно буде використовувати подвійні лапки "замість одинарних лапок, додаючи команду з пробілами, наприкладgit config --global alias.ci "commit -v"
ABVincita

179

Як говорили інші, відповідний спосіб додавання псевдонімів 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'

2
Для Linux я зробив це, щоб отримати git- fill.bash
Блокування Duncan

10
Якщо ви використовуєте zsh, відмінний пакет oh-my-zsh містить плагін із усіма тими "стандартними" псевдонімами git - github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/… - для bash , подивіться на github.com/revans/bash-it
jobwat

noob питання: що означає ~/.bashrcфайл "джерело" ?
ahnbizcad

1
~/.bashrc: дійсно скоротити штрихи ключів. Саме те, що шукали.
парашут

Ця відповідь є прекрасним прикладом того, чому я пропоную використовувати .gitconfig включити у свою відповідь! stackoverflow.com/a/59896430/117471
Bruno Bronosky

65

Я думаю, що найкорисніший 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

як ви це налаштували? що ти ставиш, куди це зробити?
ahnbizcad

3
@ahnbizcad Місце у ~ / .gitconfig, якщо ви git config --global, інакше він заходить у .git / config поточного сховища
shmup

19

Вам потрібна git config aliasкоманда. Виконайте наступне у сховищі Git:

git config alias.ci commit

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

git config --global alias.ci commit

11

Це працювало для мене:

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

на:

$ git --version

git version 1.7.7.5 (Apple Git-26)

1
Ви також можете зробити: git config --global alias.bco 'замовлення -b'. Тоді ви могли б зробити: git bco new-branch. :)
Рассел

4
Мені подобається git cob. нагадує мені літо, як у кукурудзи на качані. насправді чудове слово, про яке ми думаємо недостатньо ... коб, тобто
Маті Тернер

4
Якщо це вперше хтось, окрім мене, побачив команду з псевдонімом git, починаючи з цього !, зауважте, що Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"( ref )
Сем

9

Це створить псевдонім stдля status:

git config --add alias.st status


Мені знадобилося --add та використовувати подвійні лапки, а не одиничні цитати
Вирівняно

Чому, git stколи ти можеш використовувати git s, позбавляйся від цього s: Р
Абдулла

7

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

6

Для тих, хто хоче виконувати команди оболонки в псевдонімі 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>

1
Чому б не «просто» git push -f origin HEADпросунути поточну гілку до її віддаленого аналога? Також ярлик, щоб натиснути з силою? Якщо вам доводиться натискати силу досить часто, щоб скористатися ярликом, чи не щось інше у вашому налаштуванні чи робочому процесі?
RomainValeri

Bash змішався, створюючи псевдонім (замінюючи !gitостанню команду git), але вручну редагування конфігураційного файлу зробило свою справу.
Х. де Йонге

5

Ви можете псевдоніми як команд git, так і non-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

...

5

Додайте наступні рядки до ~ / .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наприклад. Те саме стосується інших команд під заголовком псевдоніму ..


4
$ git оновлення
git: 'update' - це не команда git. Див. "Git --help".

Ви це мали на увазі?
    оновлення-реф

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

$ git оновлення
З git: //git.kernel.org/pub/scm/git/git
 = [до цього часу] html -> походження / html
 = [до теперішнього часу] maint -> походження / maint
 = [до теперішнього часу] людина -> походження / людина
 = [до теперішнього часу] master -> походження / master
 = [до дати] наступний -> походження / наступний
 = [до теперішнього часу] pu -> походження / pu
 = [до цього часу] todo -> походження / todo
Вже оновлено.

4

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

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

І використовуйте його наступним чином:

git dog

3

Ви також можете ланцюжок команд, якщо ви використовуєте "!" оператор для нересту оболонки:

aa = !git add -A && git status

Це додасть усі файли та надасть вам звіт про стан $ git aa.

Щоб зручно перевірити псевдоніми, додайте цей псевдонім:

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

Тоді швидка інформація $ git aliasдає ваші поточні псевдоніми та те, що вони роблять.


3

Ви можете встановити власні псевдоніми 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

3

Для мене ( я використовую 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"

2

Просто, щоб псевдоніми були ще коротшими, ніж стандартний спосіб конфігурації git, згаданий в інших відповідях, я створив 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 у ваші dotfiles, працює на OSX, Linux та Windows. Крім того, на відміну від інших псевдонімів, він псевдоніми git->, gяк і другий параметр.


1
Дякуємо, що створили проект github.
біням

2

Якщо ви хочете альтернативи ~/.gitconfigваріанту та відкриті до копання ще трохи, ще один варіант - це написання повністю спеціальних команд git, загортаючи їх у глобальний пакет вузлів.

У своєму package.json слід визначити кореневу команду (приклад:), gtа потім відфільтрувати конкретні команди для виконання правильних команд git. Наприклад, git checkout my-branchможе бути gt co mybranch.

Пакет "christian-git" у npm використовує цей метод: https://github.com/alexmacarthur/christian-git




1

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

Я пропоную використовувати .gitconfig включити для своїх псевдонімів. Як тільки ви почнете створювати псевдоніми, ви, ймовірно, закінчите їх чимало. Вони, ймовірно, будуть чимось, що ви хочете поділитися з іншими. Якщо розмістити їх у виділеному файлі, це обмін легко. Ваша команда може навіть використовувати git repo, щоб розмістити спільні псевдоніми. І звичайно деякими псевдонімами ви не хочете ділитися, тому зберігайте їх у приватному файлі псевдоніму.

[include]
    path=src/dotfiles/.gitaliases

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

[include]
    path=.gitaliases.private

-1

Ще одна можливість для Windows - мати каталог, заповнений файлами .bat, в яких є ваші ярлики. Ім'я файлу - це ярлик, який слід використовувати. Просто додайте каталог до змінної середовища PATH, і у вікні cmd у вас є всі ярлики.

Наприклад (gc.bat):

git commit -m %1

Тоді ви можете виконати таку команду в консолі:

gc "changed stuff"

Причина, що я додаю це як відповідь, полягає в тому, що при використанні цього ви не обмежуєтесь git ...лише командами.


1
Ви можете зробити те ж саме, додавши псевдоніми оболонки до свого .profile, або .bashrc або .bash_profile, залежно від вашої системи. Тоді всі ваші псевдоніми знаходяться в одному файлі. Крім того, це стандартний механізм для виконання вашого завдання. У розділі "псевдоніми команд" показані деякі загальновизначені псевдоніми оболонки, які використовуються для команд git. Є кращі ресурси та навчальні посібники з цього приводу, це просто відбувається посилання, яке я відкрив.
SherylHohman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.