2013-05-28 10 views
11

मैं गिट भंडार के साथ काम करना चाहता हूं, लेकिन काम करने वाला पेड़ दूरस्थ होना चाहिए। उदाहरण के लिए: यदि मेरे पास ~/project और project.git के अंदर ~/git/project.git के अंदर संग्रहीत मेरा प्रोजेक्ट संग्रहीत है।गिट बदलती निर्देशिका निर्देशिका

क्या मैं config के माध्यम से काम कर पेड़ बदल दिया है:

worktree=/Users/myuser/project

और मैं प्रतिबद्ध और देखने diff करने में सक्षम हूँ, लेकिन जब मैं git stash करने की कोशिश की है, मैं त्रुटि मिली:

घातक:/usr/libexec/git-core/git-stash का उपयोग बिना किसी पेड़ के उपयोग किया जा सकता है।

.git निर्देशिका को पेड़ से दूर करने के लिए कैसे स्टोर करें? और मुझे यह त्रुटि क्यों मिल रही है?

git config --get core.worktree रिटर्न सही कार्यशील निर्देशिका ....

+0

प्रयास करें '--git-dir' या सेट पर्यावरण वर' GIT_DIR', स्वीकार किए जाते हैं को देखने के http://stackoverflow.com/questions/5283262/what-is-a-git-work-tree-why-have-i-never-needed-to-set-this-as-an-env-var- क्यों – devconsole

+0

मैंने जवाब देखा है, लेकिन मुझे लगता है, अगर मैं इसे GIT_DIR ओवरराइड करता हूं कम समय में कुछ भंडारों के साथ काम करने के दौरान कुछ गड़बड़ी का कारण बन जाएगा। मुझे वर्कट्री कॉन्फ़िगरेशन विकल्प मिला है, लेकिन काम करने वाली निर्देशिका के बारे में कुछ भी नहीं ... रिपोजिटरी भी मौजूद है, और मैं 'गिट इनिट - गिट-डीआईआर' नहीं चला सकता। कैसे उपयोग करें - गिट-डीआईआर? कोई दस्तावेज? क्या यह कॉन्फ़िगरेशन के माध्यम से सेट किया जा सकता है? – ValeriiVasin

+2

आम तौर पर गिट वर्तमान कार्य निर्देशिका में .git निर्देशिका की तलाश करता है। यदि यह वहां नहीं है तो यह मूल निर्देशिका में तब तक दिखता है जब तक कि यह रूट निर्देशिका तक नहीं पहुंच जाता। आपके सेटअप में यह कभी भी नहीं मिलेगा। Git और इसलिए यह भी .git/config नहीं मिलेगा। तो आपको .git निर्देशिका का स्थान निर्दिष्ट करना होगा। शायद आप विभिन्न परियोजनाओं के लिए विभिन्न उपनामों का उपयोग कर सकते हैं? – devconsole

उत्तर

12

निम्नलिखित, काम अपनी आवश्यकताओं को समायोजित करने लगता है:

mkdir git 
mkdir work 
git --git-dir git/test --work-tree work/test init 
mkdir work/test 
echo -n foo > work/test/foo.txt 
git --git-dir git/test status 
git --git-dir git/test add foo.txt 
git --git-dir git/test commit -m 'commit 1' 

संपादित करें: सूचना आप रेपो के बाद --work-tree निर्दिष्ट करने के लिए की जरूरत नहीं है कि प्रारंभ किया गया है क्योंकि उस मान को git/test/config में संग्रहीत किया गया है।

तुम भी काम/परीक्षण में सीडी और वहाँ से प्रतिबद्ध कर सकते हैं:

cd work/test 
echo -n bar > bar.txt 
git --git-dir ../../git/test status 
git --git-dir ../../git/test add . 
git --git-dir ../../git/test commit -m 'commit 2' 

तब के लिए --git-dir या सेट GIT_DIR एक निरपेक्ष पथ का उपयोग करें।

3

--git-dir ध्वज के उपयोग के लिए सुधार:

उपयोग:

git --git-dir=git/test/.git ... 

के बजाय:

git --git-dir git/test ... 
संबंधित मुद्दे