मैं सिमिटेड फ़ोल्डर में git कमिट कैसे कर सकता हूं


20

मेरे पास दो फ़ोल्डर हैं:

  • /home/me/code/project/
  • /srv/www/projectfiles/

में /home/me/code/projectफ़ोल्डर, मैं सांकेतिक रूप से लिंक है staticकरने के लिए/srv/www/projectfiles/

अर्थात /home/me/code/project/static/->/srv/www/projectfiles/

जब मैं अभी कमिट करने की कोशिश करता हूं, तो यह सिम्लिंक के पीछे की किसी भी फाइल को नहीं देखता है, और इसके बजाय सिम्लिंक को ही फाइल के रूप में कमिट करने की कोशिश करता है।

मैं एक फाइल कैसे कर सकता हूं (जैसे /srv/www/projectfiles/style.css) वह जो सिमलिंक के पीछे है?

जवाबों:


12

वर्कअराउंड होना होगा / srv / www / प्रोजेक्टफाइल्स को एक सिम्लिंक होना / घर / मुझे / कोड / प्रोजेक्ट / स्टेटिक ताकि git कोई सहानुभूति न देखे


तो आप मूल रूप से तर्क को उलट रहे हैं? Git फ़ोल्डर में आवश्यक फ़ाइलों / फ़ोल्डरों को रखें और फिर कहीं और एक सिमलिंक लगाएं (जहाँ मूल फ़ाइलों / फ़ोल्डरों का उपयोग किया जाता है)?
रूस

@Rusl हाँ बिल्कुल वही
user151019

लेकिन फिर मैं फ़ाइलों का स्थानीय अनुकूलन कैसे कर सकता हूं? मुझे प्रत्येक मशीन के लिए अलग रेपो होना चाहिए? पूरे बिंदु को खो देता है।
अस्नुर

खैर स्थानीय अनुकूलन git में नहीं होगा
user151019

4

यदि आप linux का उपयोग कर रहे हैं, तो मुझे विशेष रूप से GitBLSR द्वारा प्रदान किया गया समाधान पसंद है । यह एक पुस्तकालय है जिसे LD_PRELOAD के माध्यम से लोड किया जाता है जो पारदर्शी रूप से dereferences फ़ाइलों और फ़ोल्डरों को एक रिपॉजिटरी के बाहर सहानुभूति देता है।

स्थानीय उपयोगकर्ता खाते के लिए इसे स्थापित करना सरल है:

git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh

यह पुस्तकालय को संकलित करेगा और निम्नलिखित की तरह एक उपनाम तैयार करेगा ~/.bashrc:

alias git="LD_PRELOAD=/path/to/gitbslr.so git"

इस उपनाम का उपयोग करने से पारदर्शी लिंक डेरेफेरिंग सक्षम हो जाता है।


1
वह भयानक है! लेकिन यह ठीक काम करता है, इसलिए यह बहुत अच्छा है। धन्यवाद!
केई

वह अजीब है! मुझे यह बहुत पसंद है
मार्कोस बेस्टेरो लोपेज़

2

जिस स्थान पर आप इसे चाहते हैं, वह स्थान प्रोजेक्ट में प्रदर्शित करने के लिए गंतव्य फ़ोल्डर (जिसे आप वर्तमान में सिम्प्लिंक करते हैं) को माउंट करने के लिए माउंट पॉइंट का उपयोग करने पर विचार करें। मैंने इस दृष्टिकोण का सफलतापूर्वक उपयोग किया है।


1

फ़ाइलों को फ़ोल्डर में ले जाएं और सिमलिंक को हटा दें। Git सहानुभूति को पार नहीं करता है।

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


1
मैं इन फाइलों को नियंत्रित करता हूं। वे स्टाइलशीट आदि हैं और एक निर्देशिका में होने की आवश्यकता है जो सर्वर सर्वर करेगा।
मटका

1

एक और वर्कअराउंड - केवल एक ही मैंने पाया कि निर्देशिकाओं के लिए भी काम करता है - विशिष्ट कार्यों के लिए गिट वर्किंग ट्री को बदलना है।

git --work-tree=/home/me/code/project/ add /home/me/code/project/static/
git --work-tree=/home/me/code/project/ commit /home/me/code/project/static/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.