2013-03-22 6 views
5

मैं ईजीट का उपयोग कर अपने ग्रहण परियोजना के लिए एक गिट भंडार स्थापित करने की कोशिश कर रहा हूं। हालांकि, मुझे भंडार से रूट/प्रोजेक्ट निर्देशिका को छोड़कर परेशानी हो रही है।ग्रहण - गिट भंडार से रूट निर्देशिका को बाहर निकालें?

ProjectDirectory 
    src 
    war 
    etc 

मैं भंडार को रोकने के लिए src, war, और etc, लेकिन नहीं मूल निर्देशिका ProjectDirectory शामिल करना चाहते हैं: यह जा रहा है, अपने प्रोजेक्ट संरचना है। ऐसा इसलिए है क्योंकि अगर मैं अपने वर्कस्पेस में प्रोजेक्ट की प्रतिलिपि बनाना चाहता हूं, ProjectDirectory2, दूसरी प्रोजेक्ट के लिए रिपोजिटरी अब दूसरी रूट निर्देशिका, ProjectDirectory बनाने का प्रयास करेगी। दुर्भाग्यवश, जब मैं ईजीआईटी का उपयोग कर एक प्रोजेक्ट के लिए एक रिपॉजिटरी जोड़ने की कोशिश करता हूं, तो मैं प्रोजेक्ट फ़ोल्डर पर ही टीम> शेयर प्रोजेक्ट का उपयोग करने में सक्षम हूं और मुझे रिपॉजिटरी में रूट निर्देशिका को बाहर करने के लिए वैसे भी दिखाई नहीं दे रहा है ग्रहण के भीतर।

ईजीआईटी का उपयोग कर भंडार में शीर्ष निर्देशिका को कैसे छोड़ें इस पर कोई सुझाव? मैं ग्रहण के भीतर से सबकुछ करने में सक्षम होना पसंद करूंगा, लेकिन अगर कोई रास्ता नहीं है, तो इस तरह से गिट के बाहर भंडार को स्थापित करने का कोई तरीका है, फिर भी गिट नियंत्रण से नियमित रूप से गिट नियंत्रण का उपयोग करने में सक्षम हो भंडार शीर्ष स्तर निर्देशिका छोड़ने? बहुत धन्यवाद।

उत्तर

2

आप एक से अधिक कारणों के लिए परियोजना जड़ प्रतिबद्ध चाहिए:

  • आप अपने प्रोजेक्ट का केवल उप निर्देशिका के लिए प्रतिबद्ध हैं, तो आप फ़ाइलों और फ़ोल्डरों जो परियोजना जड़ नीचे छिपे हुए हैं (उदाहरण के लिए याद करेंगे .settings निर्देशिका और अन्य)। उनको भी प्रतिबद्ध करने की आवश्यकता है, अन्यथा आपकी परियोजना सूचना को याद करने जा रही है और अन्य मशीनों पर एक ही परिणाम नहीं ले सकती है।
  • एक ही कार्यक्षेत्र में दूसरी बार एक ही भंडार क्लोन करने की आपकी इच्छा बहुत अधिक लगता है जैसे आपको गिट शाखाओं के बारे में फिर से पढ़ना चाहिए। गिट में, आंखों के झपकी के बाद शाखाओं के बीच स्विचिंग किया जाता है, इसलिए विभिन्न सुविधाओं, संस्करणों या अन्यथा आपके प्रोजेक्ट के विभिन्न संस्करणों पर काम करते समय शाखाओं का उपयोग किया जाना चाहिए।
  • एक्लिप्स परियोजना का नाम और डिस्क पर अंतर्निहित फ़ोल्डर नाम समान होने की आवश्यकता नहीं है (एक नई परियोजना बनाते समय चेकबॉक्स "डिफ़ॉल्ट स्थान का उपयोग करें" के लिए देखें)। तो आप परियोजना के दूसरे क्लोन को एक अलग नाम से चेकआउट कर सकते हैं।
  • यदि आप बाद में अपने कार्यक्षेत्र (उदाहरण के लिए एक परीक्षण प्रोजेक्ट) में और अधिक परियोजनाएं जोड़ते हैं, तो आप उन्हें आसानी से उसी गिट भंडार में साझा नहीं कर सकते हैं, क्योंकि उन अतिरिक्त परियोजनाओं की सामग्री पहली परियोजना की उप निर्देशिकाओं के साथ मिल जाएगी भंडार।
+3

तो मैं समझता हूं कि उप-निर्देशिका जैसे .settings को शामिल करना चाहते हैं, लेकिन इन्हें अभी भी जिस तरह से मैं सुझाव दे रहा हूं, भंडार में शामिल किया जा सकता है। मैंने यह भी देखा है कि लगभग हर प्रोजेक्ट जिसे मैं ऑनलाइन देखता हूं (जैसे गिथब पर) शीर्ष निर्देशिका को बाहर करता है जैसा कि मैं करना चाहता हूं (यानी प्रोजेक्ट रिपोजिटरी/प्रोजेक्टफोल्डर/src के बजाय यह github पर रिपोजिटरी है प्रोजेक्ट रिपोजिटरी/src)। इन सभी परियोजनाओं ने ऐसा क्यों किया है यदि आपके सुझाव के फायदे हैं? शीघ्र जवाब देने के लिए ध्न्यवाद। – golmschenk

+0

उदाहरण के लिए: https://github.com/gwtbootstrap/gwt-bootstrap – golmschenk

+0

मुझे लगता है क्योंकि उनके पास कभी भी एक परीक्षण प्रोजेक्ट नहीं था। मैंने बिल्कुल देखा है कि एक ओपन सोर्स प्रोजेक्ट के साथ जहां मैं योगदान देता हूं। हमने केवल उप निर्देशिकाएं भी की हैं और फिर परीक्षण परियोजना के लिए एक अतिरिक्त रेपो बनाया है। लेकिन कई परियोजनाओं से/खींचने/धक्का देने के लिए इतनी अजीब हो गई (और परीक्षण मुख्य परियोजना के साथ समन्वयित नहीं थे), इसलिए हमने अंततः सभी कोड फिर से व्यवस्थित किए और परियोजना की जड़ों को प्रतिबद्ध किया: https://github.com/cgeo/ सी-भू-ओपनसोर्स – Bananeweizen

2

यदि आपके पास मेवेन प्रोजेक्ट है तो आप सामान्य रूप से egit द्वारा बनाए गए प्रोजेक्ट फ़ोल्डर के बिना एक संग्रह बनाना चाहते हैं। मेरे अनुभव के लिए egit प्लगइन के साथ यह संभव नहीं है। लेकिन इसे आसानी से गिट कमांड लाइन से किया जा सकता है।

सबसे पहले अपना Git फ़ोल्डर में अपने ग्रहण कार्यक्षेत्र से अपने मौजूदा ग्रहण/Maven परियोजना के लिए कदम (यह क्या भी egit प्लगइन किया है):

mv myproject ~/git/ 

अगले एक नया Git भंडार बनाने

cd ~/git/myproject 
git init 

अब एक .gitignore फ़ाइल बनाएं और इसे अपने नए भंडार फ़ोल्डर (~/git/myproject/.gitignore) में रखें। यह एक उदाहरण है।gitignore फ़ाइल:

# ignore all bin directories 
# matches "bin" in any subfolder 
bin/ 

# ignore all target directories 
target/ 

# ignore all files ending with ~ 
*~ 

# ignore eclipse directories and project files 
.settings/ 
.project 
.classpath 

अंत में अपनी परियोजना

git add * 
git commit -m "My initial commit message" 

Thats यह की सामग्री के साथ अपने नए भंडार initalize। अब आप अपने ग्रहण को पुनरारंभ कर सकते हैं और परियोजना को अपने नए गिट भंडार से पुनः आयात कर सकते हैं। अपने ग्रहण egit भंडार दृश्य और कोस 'आयात exisiting परियोजना' में जाओ।

+0

यदि ग्लोब '*' आपके .gitignore में किसी भी फ़ाइल से मेल खाता है, तो 'git add *' विफल हो जाएगा। –

0

मेरा समाधान यहां है। हालांकि विशेष रूप से सुंदर नहीं - कदम सब आसान है, यह काम करता है, और लगभग 10 मिनट में किया जा सकता है: अपने स्थानीय फाइल सिस्टम में

  1. क्लोन दूरस्थ Git रेपो .. जैसे: ~/git/project_repo_root

  2. बनाएं हमेशा की तरह अपने ग्रहण परियोजना .. जैसे: ~/workspace/eclipse_project_root

  3. ग्रहण से प्रोजेक्ट हटाएं

  4. फ़ाइल प्रबंधक खोलें और ग्रहण के लिए कदम (लेकिन फ़ाइल में नहीं है!) परियोजना ~/Git

    mv ~/workspace/eclipse_project_root ~/git/

  5. ले जाएँ .git/ग्रहण परियोजना रूट फ़ोल्डर के लिए रेपो फ़ोल्डर से फ़ोल्डर में आप सिर्फ ~/कार्यक्षेत्र/जड़ से बनाया:

    mv ~/git/project_repo_root/.git ~/git/eclipse_project_root

  6. एक खोल का उपयोग करके/eclipse_project_root/में जाएं और रेपो में इच्छित सभी फ़ाइलों के लिए सामान्य कमांड लाइन कमांड करें:

    git add <abc>; .. commit; .. push

  7. ग्रहण पर लौटें और गिट परिप्रेक्ष्य पर जाएं, और "इस दृश्य में मौजूदा स्थानीय गिट रेपो जोड़ें" पर क्लिक करें। गिट रेपो का चयन करें जिसके साथ आप काम कर रहे हैं और जब आप ठीक कहें तो उस रेपो के लिए दृश्य को अपडेट किया जाना चाहिए।

  8. बार जब आप अपने ध्यान में रखते हुए स्थानीय रेपो देखते हैं, आप सही यह क्लिक करें और आयात परियोजनाओं वापस अपने मुख्य विकास परिप्रेक्ष्य (जावा, आदि) के लिए

  9. जा सकते हैं और आप के साथ वहाँ परियोजना देखना चाहिए पैकेज एक्सप्लोरर व्यू में रूट नोड पर गिट मार्कअप।

उस समय ~~~~~, आप आप सिर्फ

मुझे पता है (उदाहरण यहाँ वर्णित में ~/Git करने के लिए) चला गया था ग्रहण प्रोजेक्ट फ़ोल्डर देखना चाहिए यह मेरी प्रतिक्रियाओं की तुलना में अधिक वर्बोज़ है, लेकिन इस विशेष चुनौती/समाधान के लिए .. मुझे यह करने के लिए एक और अधिक सरल तरीका नहीं पता है।

और ऊपर दिए गए पद के लिए आपको हमेशा ग्रहण परियोजना रूट निर्देशिका शामिल करनी चाहिए .. वास्तविकता कुछ परियोजनाओं/क्लाइंट/आदि की आवश्यकता है कि गिट रेपो में रूट फ़ोल्डर न हो।> कॉन्फ़िगर Git रेपो विंडो

सुनिश्चित करने में - तो यह की तरह एक समाधान के लिए आवश्यक है कभी कभी

+1

10 मिनट में मैं ईजीआईटी को अनइंस्टॉल कर सकता हूं और उपयोग करने के लिए एक अच्छा गिट क्लाइंट ढूंढ सकता हूं: डी – anton1980

+0

इस समाधान के साथ, गिट प्रोजेक्ट ग्रहण प्रोजेक्ट के समान निर्देशिका में है। ईजीआईटी के साथ डिफ़ॉल्ट रूप से हमारे पास दो अलग-अलग निर्देशिकाएं हैं, लेकिन प्रोजेक्ट निर्देशिका को काटते समय ऐसा करना असंभव प्रतीत होता है। –

2

लघु जवाब यह EGIT + M2E

चाल जब कर रही है शेयर परियोजना के साथ संभव है का उपयोग करें या इस परियोजना के मूल फ़ोल्डर

टिक में भंडार बना सकते हैं और यह सुनिश्चित करते हुए भंडार बटन बनाने क्लिक

इसका मुख्य उद्देश्य आपके प्रोजेक्ट रूट के ऊपर प्रोजेक्ट रूट

में .git फ़ोल्डर बनाना है।

+0

Shanyangqu - आपने मेरा दिन बचाया! – JavaTec

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