मैं कैसे उपनाम में आदेश देता हूं?


619

मैंने एक पेंचकस देखा, जहां किसी को मिल गया था

git st
git ci

काम करने के लिए। जब मैं इसे करता हूं तो मुझे एक त्रुटि मिलती है जो मुझसे पूछती है कि क्या मेरा मतलब कुछ और है।
गिट न्यूब होने के नाते, मुझे यह जानना होगा कि इसे पूरा करने के लिए आपको क्या करना होगा?


1
आप इसे यहां देख सकते हैं git-scm.com/book/en/v2/Git-Basics-Git-Aliases
JayRizzo

इसके अलावा git उर्फ ​​के और अधिक उन्नत उपयोग पर और प्रश्न देखें: stackoverflow.com/questions/46528736/…
NeilG

जवाबों:


977

मूल रूप से आपको बस लाइनों को जोड़ने की जरूरत है ~/.gitconfig

[alias]
    st = status
    ci = commit -v

या आप git config उपनाम उपनाम का उपयोग कर सकते हैं:

$ git config --global alias.st status 

यदि उर्फ ​​में स्थान है तो यूनिक्स पर एकल उद्धरणों का उपयोग करें:

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

खिड़कियों पर, दोहरे उद्धरण चिह्नों का उपयोग करें यदि उपनाम में स्थान या कमांड लाइन तर्क है:

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

उपनाम आदेश भी पैरामीटर के रूप में कार्यों को स्वीकार करता है। उपनाम पर एक नज़र डालें ।


86
मैं अत्यधिक सलाह देता हूं कि आप अपने वर्तमान भंडार के बजाय git config --globalउपनाम रखने ~/.gitconfigके .git/configलिए उपयोग करें।
कैस्केबेल

27
मैं सेटिंग्स पसंद करते हैं stकरने के लिए status -s(लघु स्थिति)
Hasen

20
यह वास्तव में बहुत बढ़िया है। मैं इसके लिए देख रहा हूं। यदि आप रिक्त स्थान का उपयोग करना चाहते हैं, तो बस एक सिर है, 'जैसेgit config --global alias.sr 'svn rebase'
अमीर रफ़्फ़र

1
@ हेलिशेट ये एलियट गिट द्वारा, गिट के लिए बनाए गए हैं। यदि आप किसी अन्य कमांड लाइन सिस्टम के लिए उपनाम चाहते हैं, तो आपको यह देखना होगा कि उस सिस्टम को कैसे करना है। (आप एक यूनिक्स जैसी प्रणाली का उपयोग करते हुए दिखाई देते हैं, और मुझे पता है कि यूनीस पर उपनाम बनाना काफी सरल है। वाक्य रचना हालांकि अलग है। एक Google खोज का प्रयास करें।)
माइकल डोरस्ट

17
बस एक और सिर है, अगर आप विंडोज कमांड लाइन पर गिट का उपयोग कर रहे हैं, तो आपको "रिक्त स्थान के साथ कमांड जोड़ते समय सिंगल कोट्स के बजाय दोहरे उद्धरण चिह्नों का उपयोग करने की आवश्यकता होगी , जैसेgit config --global alias.ci "commit -v"
ABVincita

179

जैसा कि अन्य लोगों ने कहा है कि गिट अलायस को जोड़ने का उपयुक्त तरीका आपकी वैश्विक .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

इसके अलावा, यदि आप बैश का उपयोग कर रहे हैं, तो मैं git-completion.bashआपके होम डायरेक्टरी की नकल करके और इसे अपने से सोर्स करके बैश पूरा करने की सलाह दूंगा ~/.bashrc। (मुझे विश्वास है कि मैंने इसके बारे में प्रो गिट ऑनलाइन पुस्तक से सीखा है ।) मैक ओएस एक्स पर, मैंने इसे निम्न आदेशों के साथ पूरा किया:

# 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_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- complete.bash
Duncan Lock

10
यदि आप zsh का उपयोग करते हैं, तो उत्कृष्ट oh-my-zsh सुइट में उन सभी "मानक" git उपनामों के साथ एक प्लगइन होता है - github.com/robbyrussell/oh-my-zsh/blob/master/plugins-it-… - bash के लिए। , github.com/revans/bash-it
jobwat

noob सवाल: इसका क्या मतलब है " ~/.bashrcफ़ाइल से sourced" ?
अहानिबेकाड ५

1
~/.bashrc: वास्तव में की-स्ट्रोक को काटने के लिए। बिल्कुल वही जो ढूंढ रहा था।
पाराशर

यह उत्तर इस बात का एक आदर्श उदाहरण है कि मैं अपने जवाब में एक .itconfig का उपयोग करने का सुझाव क्यों देता हूं! stackoverflow.com/a/59896430/117471
ब्रूनो ब्रोंस्की

65

मुझे लगता है कि सबसे उपयोगी gitconfig इस तरह है, हम हमेशा git में 20% फ़ंक्शन का उपयोग करते हैं, आप "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

आप इसे कैसे सेट करते हैं? आप इसे कहाँ बनाते हैं?
अहानिबेकाड ५

3
@ahnbizcad प्लेस ~ / .itconfig में अगर आप config --global को git करते हैं अन्यथा यह init / चालू रिपॉजिटरी के कॉन्फिगर हो जाता है
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 'checkout -b'। तब आप कर सकते हैं: git bco नई-शाखा। :)
रसेल

4
मुझे पसंद है git cob। गर्मियों की याद दिलाता है, जैसे कोब पर मकई। वास्तव में एक महान शब्द हम पर्याप्त के बारे में नहीं सोचते हैं ... सिल है कि
Мати Тернер

4
मामले में यह पहली बार है जब मेरे अलावा किसी ने भी उर्फ ​​कमांड को शुरू करते देखा है !, ध्यान दें कि Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"( रेफरी )
सैम

9

यह एक उपनाम पैदा करेगा stके लिए status:

git config --add alias.st status


मुझे Theadd की आवश्यकता थी और दोहरे उद्धरण चिह्नों का उपयोग करने के लिए, एकल उद्धरणों का उपयोग नहीं किया गया
संरेखित किया गया

git stजब आप उपयोग कर सकते हैं git s, तो इससे छुटकारा क्यों पाएं s: P
अब्दुल्ला

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वर्तमान शाखा को अपने दूरस्थ समकक्ष को धक्का देने के लिए? इसके अलावा, बल के साथ पुश करने के लिए एक शॉर्टकट? यदि आपको शॉर्टकट से लाभ उठाने के लिए बार-बार जोर लगाना पड़ता है, तो क्या आपके सेटअप या वर्कफ़्लो में कहीं और कुछ नहीं है?
रोमेनैवेलेरी

बैश ने अलियास बनाने ( !gitअंतिम गिट कमांड के साथ बदलने ) को जाल में फंसाया, लेकिन मैन्युअल रूप से एडिटिंग फाइल ने ट्रिक को अंजाम दिया।
एच। डी।

5

आप git और गैर-git दोनों कमांड को उपनाम दे सकते हैं। ऐसा लगता है कि यह संस्करण 1.5 में जोड़ा गया था। git config --helpमेरे मैक शो के संस्करण 2.5.4 पर पेज से एक स्निपेट :

यदि उर्फ ​​विस्तार को विस्मयादिबोधक बिंदु के साथ उपसर्ग किया जाता है, तो इसे शेल कमांड के रूप में माना जाएगा।

उदाहरण के लिए, आपकी वैश्विक .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 config --global alias.update 'पुल -v'

$ git अपडेट
Git से: //git.kernel.org/pub/scm/git/git
 = [अप टू डेट] html -> मूल / html
 = [अप टू डेट] मुख्य -> ​​मूल / मुख्य
 = [अप टू डेट] आदमी -> मूल / आदमी
 = [अप टू डेट] मास्टर -> मूल / मास्टर
 = [अप टू डेट] अगला -> मूल / अगला
 = [अप टू डेट] पु -> मूल / पु
 = [अप टू डेट] टूडू -> मूल / टूडू
पूर्व अद्यतन।

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

मेरे लिए ( मैं टर्मिनल के साथ मैक का उपयोग कर रहा हूं ) केवल तभी काम किया जब मैंने परिवर्तन को लोड करने के लिए .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 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

और अन्य आदेश भी इसी तरह कम होंगे। इससे बैश पूर्णता भी रहती है। पैकेज आपके dotfiles में एक bash फ़ंक्शन जोड़ता है, osx, linux और windows पर काम करता है। इसके अलावा, अन्य उपनामों के विपरीत, यह उपनाम git-> gसाथ ही दूसरा पैरामीटर।


1
जीथुब प्रोजेक्ट बनाने के लिए धन्यवाद।
biniam

2

यदि आप विकल्प का विकल्प चाहते हैं ~/.gitconfigऔर थोड़ी और खुदाई करने के लिए खुला है, तो एक अन्य विकल्प पूरी तरह से कस्टम गिट कमांड को वैश्विक नोड पैकेज में लपेटकर लिखना है।

अपने package.json में, आप रूट कमांड को परिभाषित करेंगे (उदाहरण:), gtऔर फिर सही git कमांड को निष्पादित करने के लिए विशिष्ट कमांड को फ़िल्टर करें। उदाहरण के लिए, git checkout my-branchहो सकता है gt co mybranch

Npm पर "क्रिस्चियन-गिट" पैकेज इस पद्धति का उपयोग करता है: https://github.com/alexmacarthur/christian-git


1

यह यहाँ दिया जाता है एलियासेस । यहाँ पर बहुत अच्छे उत्तर हैं, मैंने इसे इसलिए जोड़ा क्योंकि यह विंडोज़ और लाइनक्स में भिन्न है



1

अपने में कई अन्य फ़ाइलों को शामिल करें .gitconfig

मैं एक उपयोग करने का सुझाव .gitconfig शामिल अपने अन्य नामों के लिए। एक बार जब आप उपनाम बनाना शुरू करते हैं, तो आप शायद उनमें से बहुत से खत्म कर देंगे। वे संभवतः कुछ ऐसा होगा जो आप दूसरों के साथ साझा करना चाहते हैं। उन्हें समर्पित फ़ाइल में रखने से साझा करना आसान हो जाता है। आपकी टीम साझा किए गए उपनामों को रखने के लिए एक git रेपो का उपयोग भी कर सकती है। और निश्चित रूप से कुछ उपनाम आप साझा नहीं करना चाहेंगे, इसलिए उन्हें एक निजी उपनाम फ़ाइल में रखें।

[include]
    path=src/dotfiles/.gitaliases

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

[include]
    path=.gitaliases.private

-1

विंडोज़ के लिए एक और संभावना है कि .bat फ़ाइलों के साथ एक निर्देशिका भरी हो, जिसमें आपके शॉर्टकट हों। फ़ाइल का नाम उपयोग करने के लिए शॉर्टकट है। बस निर्देशिका को अपने PATH परिवेश चर में जोड़ें और आपके पास cmd विंडो में आपके निपटान के लिए सभी शॉर्टकट हैं।

उदाहरण के लिए (gbbat):

git commit -m %1

तब आप कंसोल में निम्न कमांड निष्पादित कर सकते हैं:

gc "changed stuff"

इसका कारण मैं इसे एक उत्तर के रूप में जोड़ रहा हूं क्योंकि इसका उपयोग करते समय आप git ...केवल आदेशों तक सीमित नहीं होते हैं ।


1
आप अपने सिस्टम के आधार पर अपने .profile, या .bashrc, या .bash_profile में शेल उपनाम जोड़कर ऐसा कर सकते हैं। तब आपके सभी उपनाम एक फ़ाइल में हैं। इसके अलावा, यह मानक तंत्र है जो आपके कार्य को पूरा करने के लिए है। अनुभाग "कमांड उपनाम" कुछ सामान्य रूप से परिभाषित शेल उपनामों को दिखाता है जो गिट कमांड के लिए उपयोग किया जाता है। इस पर बेहतर संसाधन और ट्यूटोरियल हैं, यह सिर्फ एक लिंक है जो मैंने खोला था।
शेरिलहोमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.