2010-08-28 15 views
7

मैं Git के साथ एक बाध्यता में हूं। मैं git commit निष्पादित करने के लिए कोशिश कर रहा हूँ, लेकिन मैं ~/.gitconfig1 और ~/.gitconfig2 के बीच swtich करने में सक्षम होने की जरूरत है वहाँ एक कमांड लाइन स्विच है - या वैसे भी Git एक अलग gitconfig फ़ाइल का उपयोग तो /etc/gitconfig, ~/.gitconfig और .git/config में पाया लोगों के लिए?मैं कस्टम वैश्विक gitconfig पथ कैसे निर्दिष्ट कर सकता हूं?

+0

क्या आपको वास्तव में एक रेपो में दो अलग-अलग कॉन्फ़िगरेशन की आवश्यकता है? क्या आप जो चाहते हैं उसे प्राप्त करने के लिए आप प्रत्येक रेपो के लिए .git/config का उपयोग कर सकते हैं? मुझे लगता है कि अगर आप दर्जनों रिपो में फैलाने के लिए केवल दो आम सेटिंग्स हैं तो यह बहुत ही सुरुचिपूर्ण नहीं है? – Cascabel

+0

@ जेफ्रोमी हाँ मैं करता हूं। यह एक अनूठी परिस्थिति है कि मैं वहां आया हूं जहां दो कॉन्फ़िगरेशन की आवश्यकता है –

+2

अन्य स्पष्ट विकल्प वैश्विक रूप से 'गिट प्रतिबद्ध-v2' (या कुछ छोटा)' निर्यात करने के लिए होगा! निर्यात GIT_AUTHOR_NAME = "दूसरा नाम"; गिट प्रतिबद्ध '। – Cascabel

उत्तर

12

मुझे इसे निष्पादित करने का एक तरीका मिला - यह सुरुचिपूर्ण नहीं था लेकिन यह काम करता था - और अब तक यह काम करने के लिए एकमात्र तरीका प्रतीत होता है।

गिट .gitconfig कहां निर्धारित करने के लिए HOME पथ का उपयोग करता है। मैं कुछ इस तरह प्रदर्शन करने में सक्षम था:

/home/marco/.silly/.gitconfig 
/home/marco/.stupid/.gitconfig 
/home/marco/.gitconfig 

और जब Git प्रतिबद्ध (जो केवल आदेश है कि .gitconfig की आवश्यकता है) को क्रियान्वित मैं घर पथ overrode।

HOME=/home/marco/.silly/ git commit -m "silly configuration" 

फिर आप अन्य नाम का उपयोग कर सकते हैं यह आसानी से

alias sillygit="HOME=/home/marco/.silly/ git" 
sillygit commit -m "silly stuff" 
+0

अच्छा हैक। मुझे ऐसा करने का कोई वास्तविक तरीका नहीं दिख रहा है - एक GIT_CONFIG पर्यावरण चर है, लेकिन यह केवल 'git config' को ही प्रभावित करता है, जैसा कि इसके' -f, - file' विकल्प के समान है। – Cascabel

0

man git-config मुझे कॉन्फ़िगरेशन फ़ाइल पास करने के लिए -f ध्वज का उपयोग करने के लिए कहता है। हालांकि यह git config की तुलना में अन्य कमांड के साथ काम नहीं कर रहा है, इसलिए मुझे लगता है कि आपको इसे उपनाम के साथ आसानी से करने से पहले इसे आमंत्रित करना होगा।

+0

यह बताता है कि गिट-कॉन्फ़िगरेशन का विशेष आमंत्रण किस फ़ाइल को पढ़ने या लिखने के लिए कहता है - यह किसी अन्य आदेश को प्रभावित नहीं करेगा, जहां तक ​​मुझे पता है। – Cascabel

+0

सही - यह काम नहीं किया। –

-3

आप उपयोग कर सकते हैं करने के लिए --git-निर्देशिका

git --git-dir /home/marco/silly/.git commit ... 
+0

--git-dir भंडार को संपादित किया जा रहा है, जो प्रश्नकर्ता विशेष रूप से बचने की कोशिश कर रहा है। –

0

मारियो Ceppi के alias approach एक से थोड़ा अधिक सुरुचिपूर्ण ढंग से इस्तेमाल किया जा सकता -c config=valuegit पर तर्क:

$ alias sillygit="git -c user.name=Silly -c [email protected]" 
$ sillygit commit 

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

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

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