मैं अपने git उपनामों की सूची कैसे प्रिंट कर सकता हूं, यानी bash alias
कमांड के अनुरूप ?
मैं अपने git उपनामों की सूची कैसे प्रिंट कर सकता हूं, यानी bash alias
कमांड के अनुरूप ?
जवाबों:
यह उत्तर जॉनी द्वारा उत्तर पर बनाया गया है । यदि आप उपयोग नहीं कर रहे हैं तो यह लागू होता है ।git-alias
git-extras
लिनक्स पर, एक बार चलाएं:
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
एक उपनाम है और यह एक सुविधा नहीं है।
सूचीबद्ध उपनामों को क्रमबद्ध करने के लिए, | sort
क्लोजिंग डबल-कोट से ठीक पहले संलग्न करें । वैकल्पिक रूप से, आप उपनामों को ~/.gitconfig
क्रमबद्ध रख सकते हैं ।
उपनाम को सिस्टम-वाइड उपनाम के रूप में जोड़ने के लिए, --global
(वर्तमान उपयोगकर्ता के लिए) --system
सभी उपयोगकर्ताओं के लिए बदलें । यह आमतौर पर /etc/gitconfig
फ़ाइल में जाता है ।
alias.
प्रत्येक पंक्ति की शुरुआत में छुटकारा पा जाता है
fatal: bad config
। Git-extra's solution मेरे लिए काम करता है: github.com/tj/git-extras/blob/master/bin/git-alias
git config --global alias.alias "! git config --get-regexp ^alias\."
। वैकल्पिक रूप से, यह सुनिश्चित करें git version
कि आपके पास git का वर्तमान संस्करण है।
$ git config --get-regexp उपनाम
'^alias\.'
git config -e
और फिर [alias]
सेक्शन खोजने के लिए अपनी आंखों का इस्तेमाल करें । लेकिन git के प्रशंसक हमेशा अपनी समस्याओं को हल करने के लिए थोड़ी-सी मार
git config -e
.git/config
फ़ाइल को ही संपादित करता है । लेकिन मेरे अधिकांश उपनाम वैश्विक में परिभाषित हैं ~/.gitconfig
।
git config --global alias.aliases config --get-regexp '^alias\.'"
... और फिरgit aliases
"
कहीं याद आ रही है
मैं 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
-l
एक सुविधाजनक शॉर्टकट के रूप में उपयोग कर सकते हैं --list
लेकिन मुझे उपनामों को सूचीबद्ध करने के लिए एक उपनाम बनाने का विचार पसंद है।
git config --list | grep -E '^alias'
क्या मैंने 'बैश स्क्रिप्टिंग' सुनी है? ;)
उपरोक्त टिप्पणी में 'आवश्यक नहीं' भाग के बारे में, मैंने मूल रूप से अपने उपनामों के लिए एक पुरुष पृष्ठ बनाया है। सब उपद्रव क्यों? क्या यह पूरा नहीं है?
पढ़ते रहिये...
मैंने अपने .gitconfig में इस तरह के कमांड सेट किए हैं, जैसे TAB=TAB:
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
और बस TAB=परिभाषित उपनामों के हिस्से को अलग करने के लिए एक और उपनाम परिभाषित किया गया है। (अन्य सभी विकल्पों में उनकी परिभाषा में '=' से पहले और बाद के टैब नहीं हैं, बस रिक्त स्थान हैं।)
एक उपनाम के लिए संलग्न नहीं टिप्पणियाँ भी एक TAB=====appended है, इसलिए वे 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=।
एलियास के पास मेरे पास और भी बेहतर अवलोकन करने के लिए, और चूंकि मैं बैश कंसोल का उपयोग करता हूं, इसलिए मैं टर्मिनल रंगों के साथ आउटपुट को रंगीन करता हूं:
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
मूल रूप से ऊपर जैसा है, आउटपुट में रंग कोड प्राप्त करने के लिए बस sed उपयोग जोड़ा जाता है।
-R
का झंडा कम रंग कम में दिखाया गया है करने के लिए की जरूरत है।
(मुझे हाल ही में पता चला है, कि उनकी विंडो के नीचे स्क्रॉलबार वाले लंबे कमांड मोबाइल उपकरणों पर सही ढंग से नहीं दिखाए गए हैं: वे पाठ काट दिए गए हैं और स्क्रॉलबार बस गायब है। यहां अंतिम कोड स्निपेट के साथ ऐसा हो सकता है, इसे अंदर रखें। जब यहां जाने पर कोड स्निपेट देखें तो मन
मैं अपनी आवश्यकताओं के अनुरूप, एलियास का आधा मील की तरह हूं।
साथ ही उनमें से कुछ समय के साथ बदल जाते हैं , इसलिए सभी बेहतरीन विचारों के बाद अप-टू-डेट सूची को हाथ में लेना।
**** लघु **** मेरे .itconfig उपनामों के अंश:
# 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
मेरे लिनक्स या मैक वर्कस्टेशन में भी आगे एलिजाबेथ मौजूद है।
#.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
मदद पाने के लिए सभी आवश्यक है। यह सिर्फ कुछ पात्र हैं, लेकिन आप उन्हें कितनी बार टाइप करते हैं?
मैं निम्नलिखित सभी का उपयोग करता हूं, केवल शॉर्टकट के साथ ...
ये बस मेरे सिर के ऊपर से था।
मुझे अक्सर बिना किसी गिट के 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 "..."
, खिड़कियों में
या के साथ बैश उपनाम gaa
/ g aa
या gca "..."
/g ca "..."
लिनेक्स में और मैक पर ...
मेरी जरूरतों के लिए यह करने के लिए एक स्मार्ट बात करने के लिए लग रहा था, इस तरह के आदेशों को दर्जी करने के लिए ...
... और आसान उपयोग के लिए मैंने बस कम इस्तेमाल किए गए आदेशों के लिए खुद की मदद की, इसलिए मुझे हर बार मैन पेजों से परामर्श करने की आवश्यकता नहीं है। कमानों को पूर्वनिर्धारित किया जाता है और उन्हें देखना जितना आसान होता है।
मेरा मतलब है, हम सब के बाद प्रोग्रामर हैं? काम करने के लिए चीजें जैसे हमें उनकी जरूरत होती है वह हमारा काम है।
यहाँ एक अतिरिक्त स्क्रीनशॉट है, यह विंडोज में काम करता है:
la = "!grep '\t=' ~/.gitconfig | less"
TAB
बढ़ रहा है =
? रिक्त स्थान के साथ यह काम नहीं करेगा। मेरी खिड़कियों में मेरे पास .gitconfig
खुद के स्थान थे , एक बार जब मैंने उन्हें एक ही टैबस्टॉप से बदल दिया, तो cmd.exe उम्मीद की तरह व्यवहार करता है।
जैसा कि अन्य उत्तरों में उल्लेख किया गया है, 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-"
का आनंद लें!
मैं "जून 2018 में उल्लेख किया है - सबसे अधिक इस्तेमाल किया Git आदेशों सिंहावलोकन सूची Git 2.18" उपयोग " --list-cmds=alias
( प्रतिबद्ध 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
" नहीं ।
कार्तिक शिवराम ( ) द्वारा देखें प्रतिबद्ध बी ३ commit commit (६ (१२ सितंबर २०१80 sivaraam
) ।
(द्वारा विलय Junio सी Hamano - gitster
- में प्रतिबद्ध 5079cc8 , 25 सितं, 2017)
help
: अधिक सटीक होने के लिए एक संदेश बदलेंजब उपयोगकर्ता
--help
उपनाम के बारे में किसी अन्य कमांड सूचना पर ' ' विकल्प का उपयोग करने का प्रयास करता है, तो नीचे दिखाए अनुसार मुद्रित किया जाता है:
$ git co --help
`git co' is aliased to `checkout'
यह सही नहीं लगता है क्योंकि उपयोगकर्ता ने केवल '
co
' और 'git co
' नहीं ' ' का उपनाम दिया है ।
यह उन मामलों में भी गलत हो सकता है जिनमें उपयोगकर्ता ने 'tgit
' जैसे उपनाम का उपयोग किया है ।
$ tgit co --help
`git co' is aliased to `checkout'
मैं अपने वैश्विक में इस उपनाम का उपयोग करता हूं~/.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 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
उपनाम ही #
अक्षर का शाब्दिक रूप से शामिल न हो । अन्यथा यह उन #
वर्णों को प्रतिस्थापित करता है जब छपाई होती है।
ध्यान दें : अगर आपको शाब्दिक #
संकेतों के साथ उपनाम की आवश्यकता है, तो इसे किसी अन्य वर्ण में बदलें ।
एक अंतर्निहित फ़ंक्शन है ... प्रयास करें
$ __git_aliases
सभी उपनामों की सूची :)
$
ठेठ linux टर्मिनल शीघ्र सूचित करता है। इस लाइन के बाकी हिस्सों को ऐसे टर्मिनल में टाइप करें और हिट ENTER
एंड आउट आपके उपनामों की सूची में आता है। लिनक्स और विंडोज दोनों पर काम करता है (git bash), क्योंकि यह बिल्ट-इन git है। (यह शायद एक ऐसा कार्य है जो git आंतरिक रूप से उपनामों को हल करने के लिए उपयोग करता है जब वे कमांड लाइन पर उपयोग किए जाते हैं।)
2.18 git के रूप में आप उपयोग कर सकते हैं git --list-cmds=alias
फिर भी एक अन्य git
उपनाम (जिसे कहा जाता है alias
) गिट एलियाट्स को प्रिंट करता है: निम्नलिखित को अपने जीटॉन्फिग [alias]
अनुभाग में जोड़ें:
[alias]
# lists aliases matching a regular expression
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
उदाहरण का उपयोग, पूर्ण उपनाम नाम देना (उपनाम नाम से बिल्कुल मेल खाता है: यानी ^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 ..@{u}
alias.outgoing log @{u}..
कैविट्स: शेल विस्तार को एक ग्लोब के रूप में रोकने के लिए रेगेक्सपी को उद्धृत करें, हालांकि यह तकनीकी रूप से आवश्यक नहीं है यदि / जब कोई फाइल पैटर्न से मेल नहीं खाती है। भी: किसी भी regexp ठीक है, को छोड़कर ^
(पैटर्न शुरू) और $
(पैटर्न अंत) का उपयोग नहीं किया जा सकता है; वे निहित हैं। मान लिया गया है आपके द्वारा उपयोग नहीं git-alias
सेgit-extras
।
इसके अलावा, जाहिर है कि आपके उपनाम अलग होंगे; ये कुछ ही हैं जिन्हें मैंने कॉन्फ़िगर किया है। (शायद आप उन्हें उपयोगी भी पाएँगे।)