2012-06-21 14 views
10

क्या उपनाम का उपयोग करते समय पूर्ण आदेश दिखाने का कोई विकल्प है?गिट उपनाम निष्पादित करते समय पूर्ण आदेश दिखाएं?

उदाहरण:

$ git ci -m "initial commit" 
Full command: git commit -m "initial commit" 
... 
$ git lg 
Full command: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 
... 

उपनाम बहुत सुविधाजनक हैं, लेकिन मैं जानने के लिए/याद दिलाया जाना क्या मेरी उर्फ ​​वास्तव में क्या करते (मेरे उपनाम से ज्यादातर इंटरनेट से नकल कर रहे हैं)

उत्तर

2

एक उदाहरण के रूप की तरह:

log-1 = "!sh -c 'echo \"Full command: git log --graph --decorate --pretty=oneline --abbrev-commit\"; git log --graph --decorate --pretty=oneline --abbrev-commit' -"

आप खोल फोन करके दी आदेश पर अमल।

आपके एलजी उदाहरण में, आपको बहुत से भागने होंगे क्योंकि आपके पास qoutes और वर्णों के अंदर उद्धरण हैं जिन्हें बचने की आवश्यकता है। मेरा सुझाव है कि आप अपना खुद का सुंदर प्रारूप बनाएं और उपनाम में इसका उपयोग करें। मान लीजिए कि हम आपके प्रारूप को बुलाते हैं। यह आपको क्या करने की जरूरत है:

git config --add pretty.mine "%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset"

और आप बैश आप जोड़ सकते हैं उर्फ ​​करने के लिए "-x सेट" उपयोग कर रहे हैं उर्फ ​​

lg = "!sh -c 'echo \"Full command: git log --graph --pretty=mine --abbrev-commit --date=relative\"; git log --graph --pretty=mine --abbrev-commit --date=relative' -"

0

होगा। तो, एक सरल उदाहरण के रूप में, यदि आप एक उपनाम है:

ol = !sh -c 'git log --oneline' 

आप इसे करने के बदल देंगे:

ol = "!sh -c 'set -x; git log --oneline'" 

यह सेमी-कोलन की वजह को दोहरे उद्धरण चिह्नों की जरूरत है।

शेष कमांड लाइन को अनुमति देने के लिए, आप "$ @" में जोड़ देंगे, और एक "-" भी डाल देंगे ताकि तर्क $ 1 से शुरू हो जाएं। यह आपको देता है:

ol = "!sh -c 'set -x; git log --oneline [email protected]' -" 

अधिक जटिल उपनाम शायद पहले से ही में इस सामग्री होगा।

मुझे सभी उपनामों के लिए यह वैश्विक रूप से सेट करने का कोई तरीका नहीं पता है, हालांकि यह अच्छा होगा!

संपादित करें: यह वास्तव में इसके बजाय एक खोल फ़ंक्शन का उपयोग करके थोड़ा आसान काम करता है। आप कुछ ऐसा कर सकते हैं:

git config alias.ol '!f() { set -x; git log --oneline [email protected]; }; f' 

ऊपर जैसा ही प्रभाव प्राप्त करने के लिए।

+0

मुझे यकीन नहीं है कि यह गिट उपनामों के साथ काम करेगा (यानी गिट कॉन्फ़िगरेशन में परिभाषित) – CharlesB

+0

यह होगा। यही वह जगह है जहां से मैंने इसका परीक्षण किया। – seumasmac

+0

मेरा मतलब है कि गिट लॉग को गिट लॉग --ऑनलाइन ** गिट कॉन्फ़िगरेशन ** में, क्या यह काम करेगा? – CharlesB

3

एक अन्य विकल्प .git/config

[alias]

aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' 

की alias अनुभाग यह तो कमांड लाइन के रूप में अपने सभी उपनामों को सूचीबद्ध करता है के लिए, कमांड Aliases जो देता है पर Git विकी खंड में सूचीबद्ध विचारों है।

संबंधित मुद्दे