यह लेख इस अपेक्षाकृत अच्छी तरह से कवर करता है:
https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown
मूल रूप से यदि आप कमांड-लाइन से काम कर रहे हैं तो यह आपके अनुमान से अधिक सरल है। मान लें कि आपको 2 git repos चाहिए:
.gitone
.gittwo
आप उन्हें इस तरह सेट कर सकते हैं:
git init .
mv .git .gitone
git init .
mv .git .gittwo
आप एक फ़ाइल जोड़ सकते हैं और इसे केवल एक ही पसंद कर सकते हैं:
git --git-dir=.gitone add test.txt
git --git-dir=.gitone commit -m "Test"
तो git के विकल्प पहले आते हैं, फिर कमांड, फिर git कमांड के विकल्प आते हैं। आप आसानी से एक उपनाम आदेश की तरह पर्याप्त रूप से कर सकते हैं:
#!/bin/sh
alias gitone='git --git-dir=.gitone'
alias gittwo='git --git-dir=.gittwo'
तो आप थोड़ा कम टाइपिंग के साथ एक या दूसरे को कमिट कर सकते हैं, जैसे gitone commit -m "blah"
।
चालबाजी करने के लिए जो दिखाई देता है वह उपेक्षा है। चूंकि .ignignore आम तौर पर प्रोजेक्ट रूट में बैठता है, इसलिए आपको इसे पूरा रूट स्विच किए बिना इसे स्विच करने का एक तरीका खोजना होगा। या, आप .गित / जानकारी / बहिष्कृत का उपयोग कर सकते हैं, लेकिन आपके द्वारा प्रदर्शन किए जाने वाले सभी इग्नोर तब प्रतिबद्ध या पुश नहीं किए जाएंगे - जो अन्य उपयोगकर्ताओं को पेंच कर सकते हैं। रेपो का उपयोग करने वाले अन्य लोग एक .gitignore को धक्का दे सकते हैं, जिससे टकराव हो सकता है। इन मुद्दों को हल करने का सबसे अच्छा तरीका मेरे लिए स्पष्ट नहीं है।
यदि आप TortoiseGit जैसे GUI उपकरण पसंद करते हैं, तो आपके सामने कुछ चुनौतियाँ भी होंगी। आप एक छोटी सी स्क्रिप्ट लिख सकते हैं जो कि .amesone या .gittwo to .git को अस्थायी रूप से नामांकित करता है ताकि इन उपकरणों की धारणाओं को पूरा किया जा सके।
git subtree
काम पूरा हो जाएगा।