मैं व्यक्तिगत गिट रिपॉजिटरी कैसे व्यवस्थित कर सकता हूं?


20

मैं एक जोड़ी लायब्रेरी बनाने की योजना के साथ एक GitHub खाता स्थापित करने की प्रक्रिया में हूं, जिसे मैंने हाल ही में आईओएस परियोजनाओं के कुछ हिस्सों के रूप में विकसित किया है जो उपयोग करने के लिए अन्य iOS देवों के लिए स्वतंत्र रूप से उपलब्ध हैं।

मेरे पास वर्तमान में मेरे अधिकांश कोड के लिए ऑफ-साइट बैकअप नहीं है, इसलिए इस के भाग के रूप में, मैंने मूल रूप से सोचा था कि मैं अपने सभी निजी प्रोजेक्ट्स, या कम से कम मेरे सभी iOS प्रोजेक्ट्स को निजी GitHub द्वारा होस्ट किए गए रिपॉजिटरी में अपलोड करूंगा। । हालाँकि, मेरे पास बहुत सारी परियोजनाएँ हैं, जिनमें से कई काफी कम मूल्य वाली हैं (यानी, किताबों से अनुकूलित और सीखने के अनुभव के लिए लिखी गई हैं)। न केवल GitHub निजी रिपॉजिटरी द्वारा चार्ज करता है, यह रिपॉजिटरी को व्यवस्थित रूप से व्यवस्थित करने का कोई तरीका नहीं लगता है।

क्या कुछ ऐसा है जो मुझे याद है जो मुझे एक पदानुक्रम के साथ git रिपॉजिटरी का उपयोग करने की अनुमति देगा और टुकड़ों की जांच करेगा क्योंकि मुझे उनकी आवश्यकता है / उनके साथ काम करना है, जिस तरह से मैं वर्तमान में SVN के साथ करता हूं?

क्या GitHub (या एक प्रतियोगी, जैसे BitBucket) के पास कुछ परियोजना संगठन सुविधाएँ हैं जो मुझे याद आ रही हैं?

इस स्थिति से निपटने के लिए आमतौर पर स्वीकार किए गए "गेट वे" को छोड़ना, (रिलीज के लिए इरादा नहीं होने वाली परियोजनाओं को छोड़ दें, उन्हें ऑफ़लाइन स्टोर करें, उन्हें किसी तरह एक साथ बंडल करें, आदि)।

जहाँ तक मैं बता सकता हूँ, मेरे विकल्प हैं:

  1. GitHub पर पुस्तकालयों को रखो, अन्य सभी परियोजनाओं के लिए अपने स्वयं के SVN की मेजबानी करना जारी रखें, ऑफ-साइट बैकअप के लिए गैर-वीसीएस समाधान का उपयोग करें (धब्बा),
  2. लाइब्रेरी और सॉफ्टवेयर डालें जिनकी योजना मुझे GitHub पर जारी करने की योजना है (क्रमशः सार्वजनिक और निजी के रूप में), अपने स्वयं के SVN को उन परियोजनाओं के लिए होस्ट करना जारी रखें जिनकी मुझे ज्यादा परवाह नहीं है और केवल XYZ को लागू करने के तरीके पर मेरी स्मृति को फिर से ताज़ा करने की संभावना है, तय करें कि मैं उन्हें लिखने के लिए तैयार हूँ अगर मेरे घर में विस्फोट होता है (डबल धब्बा),
  3. [GitHub और / या BitBucket] पर सब कुछ रखो, मेरे [GitHub और / या BitBucket] खाते (ट्रिपल ब्लाच) में पॉइंटर्स के कुछ ऑफ़लाइन सेट को बनाए रखने के लिए मुझे जो कुछ भी चाहिए, उसे खोजकर कुछ हास्यास्पद संख्या के साथ सौदा करें।

2
मैं यह जानने के लिए उत्सुक हूं कि हम यहां कितने रिपॉजिटरी के बारे में बात कर रहे हैं। "संकेत" से आपका क्या अभिप्राय है?
मौलसे

चूंकि यह एक पुराना सवाल है, इसलिए बिटकॉइन आपको मुफ्त संगठन बनाने की अनुमति देता है, और उन में आपके पास परियोजनाएं हो सकती हैं, जिनमें रिपॉजिटरी हो सकती हैं। कुछ उपयोगकर्ताओं के लिए संगठन स्वतंत्र हैं। आप org / प्रोजेक्ट / रेपो द्वारा अनुमतियों का प्रबंधन कर सकते हैं।
xenoterracide

ध्यान दें कि GitHub अब अपनी भुगतान की गई योजनाओं के साथ असीमित निजी रिपॉजिटरी प्रदान करता है।
जैक

जवाबों:


11

bitbucket.org आपको अनलिमिटेड प्राइवेट रेपो बनाने की सुविधा देता है।

Git आपको कोड के कुछ टुकड़ों की जांच करने की अनुमति नहीं देता है। इसलिए आपको प्रत्येक प्रोजेक्ट के लिए एक रेपो बनाना होगा, या सभी प्रोजेक्ट्स की क्लोनिंग से निपटना होगा। वास्तव में मुझे अपनी सभी छोटी परियोजनाओं को एक ही रेपो में लगाने में कोई समस्या नहीं दिख रही है। आप इसे एक बार क्लोन करते हैं और आप कर रहे हैं।

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

मेरे पास बड़ी संख्या में रिपॉजिटरी के साथ एक सिमुलर मुद्दा है। कारण है कि मैं उन सभी को एक भंडार में संग्रहीत नहीं कर सकता है, इसलिए मुझे प्रत्येक और हर भंडार के अलग-अलग संस्करणों को शाखा देने की आवश्यकता है। इसे मैनेज करना बहुत मुश्किल है।


सच, सच ... मुझे शायद GitHub को बाहर नहीं बुलाना चाहिए था, क्योंकि मैं निजी परियोजनाओं के लिए BitBucket का उपयोग करने के लिए खुला हूं। प्रश्न को थोड़ा कम करने के लिए इसे विशेष रूप से संपादित किया।
अरकिटो

5

संक्षिप्त जवाब ...

मेरा सुझाव: GitHub और / या Bitbucket (अन्य?) पर सार्वजनिक खातों के साथ शुरू करें। कुछ सार्वजनिक परियोजनाओं को फेंक दें और उपकरण / इंटरफेस का उपयोग शुरू करें। एक बार जब आप सेवाओं के लिए एक महसूस कर लेते हैं, तो आपको प्रत्येक सेवा की सीमाएं, फायदे और नुकसान क्या हैं, के रूप में समझ होनी चाहिए। वहां से, आपको संस्करण नियंत्रण ज्ञानोदय के लिए सबसे अच्छा रास्ता चुनने में सक्षम होना चाहिए। :)


लंबा जवाब ...

मेरे पास वर्तमान में मेरे अधिकांश कोड के लिए ऑफ-साइट बैकअप नहीं है, इसलिए इस के भाग के रूप में, मैंने मूल रूप से सोचा था कि मैं अपने सभी निजी प्रोजेक्ट्स, या कम से कम मेरे सभी iOS प्रोजेक्ट्स को निजी GitHub द्वारा होस्ट किए गए रिपॉजिटरी में अपलोड करूंगा। । हालाँकि, मेरे पास बहुत सारी परियोजनाएँ हैं, जिनमें से कई काफी कम मूल्य वाली हैं (यानी, किताबों से अनुकूलित और सीखने के अनुभव के लिए लिखी गई हैं)।

क्या आपने अपना स्वयं का Git क्लाइंट स्थापित करने पर विचार किया है? यदि आप पहले से ही वेब होस्टिंग के लिए भुगतान कर रहे हैं, तो हो सकता है कि यह आपके स्वयं के Git सेटअप के लिए उस होस्ट का उपयोग करने के लिए समझ में आए।

उदाहरण के लिए, मेरा होस्ट WebFaction है (कोई संबद्धता नहीं):

Git Web Application को इनस्टॉल करना

इस मार्ग पर जाने से आप कुछ $ $ $, esp बचा सकते हैं। यदि आप पहले से ही होस्टिंग के लिए भुगतान कर रहे हैं।

न केवल GitHub निजी भंडार द्वारा चार्ज करता है,

बस दूसरों के लिए स्पष्ट करने के लिए (फिर, GitHub या BitBucket के लिए कोई व्यवसाय संबद्धता नहीं):

गिटहब: योजनाएँ और मूल्य निर्धारण

  • $ 7 / मो। अप करने के लिए 5 निजी खजाने , असीमित सब कुछ।
  • $ 12 / मो। अप करने के लिए 10 निजी भंडार , असीमित सब कुछ।
  • $ 12 / मो। 20 से अधिक निजी रिपोजिटरी के लिए , असीमित सब कुछ।

ध्यान दें कि "व्यावसायिक योजनाएं" मूल्य निर्धारण अलग है।

एटलसियन द्वारा बिटबकेट के लिए गिट और मर्क्यूरियल रेपो होस्टिंग के लिए मूल्य निर्धारण

जैसा कि एंड्रयू द्वारा दूसरे उत्तर में कहा गया है, बिटबकेट असीमित निजी प्रतिनिधि को टाल देता है।

  • 5 उपयोगकर्ता: नि : शुल्क
  • 10 उपयोगकर्ता: $ 10 / मो।
  • 25 उपयोगकर्ता: $ 25 / मो।
  • 50 उपयोगकर्ता: $ 50 / मो।
  • 100 उपयोगकर्ता: $ 100 / मो।
  • असीमित $ 200 / मो।

ऐसा लगता है कि रिपॉजिटरी के आयोजन का कोई तरीका पदानुक्रम में नहीं है।

निश्चित रूप से नहीं कि आप "पदानुक्रम" से क्या मतलब है (शायद इसलिए कि मैं SVN से परिचित नहीं हूं)।

मुझे यकीन नहीं है कि यह मदद करेगा, लेकिन आप इस तुलना तालिका को देख सकते हैं कि कमांड कैसे तुलना / भिन्न करते हैं:

क्या कुछ ऐसा है जो मुझे याद है जो मुझे एक पदानुक्रम के साथ git रिपॉजिटरी का उपयोग करने की अनुमति देगा और टुकड़ों की जांच करेगा क्योंकि मुझे उनकी आवश्यकता है / उनके साथ काम करना है, जिस तरह से मैं वर्तमान में SVN के साथ करता हूं?

शाखाओं में?

क्या GitHub (या एक प्रतियोगी, जैसे BitBucket) के पास कुछ परियोजना संगठन सुविधाएँ हैं जो मुझे याद आ रही हैं?

यकीन नहीं है कि यह मदद करेगा, लेकिन आप पर एक नज़र डाल सकते हैं:

Git कमिटिंग ( git-gui ) और ब्राउज़िंग ( gitk ) के लिए बिल्ट-इन GUI टूल के साथ आता है , लेकिन प्लेटफ़ॉर्म-विशिष्ट अनुभव की तलाश करने वाले उपयोगकर्ताओं के लिए कई तृतीय-पक्ष उपकरण हैं।

... फिर, यकीन नहीं होता कि उन उपकरणों में से कोई भी आपकी मदद कर सकता है कि क्या संभव है।

स्पष्ट होने के लिए, मुझे आपके लिए Git कौशल स्तर पर यकीन नहीं है ... यदि आप Git / GitHub में नए हैं, तो GUI का उपयोग करना आपके लिए चीजों को महसूस करने का एक त्वरित / आसान तरीका हो सकता है। मुझे व्यक्तिगत रूप से मैक / विंडोज ऐप्स के लिए आधिकारिक GitHub का उपयोग करना पसंद है।

इस स्थिति से निपटने के लिए आमतौर पर स्वीकार किए गए "git रास्ता" क्या है, असफल होना (परियोजनाओं को जारी करने के लिए इरादा नहीं है, उन्हें ऑफ़लाइन स्टोर करें, उन्हें किसी तरह एक साथ बंडल करें, आदि)।

अगर मैं तुम होते, तो मैं रिपॉजिटरी का उपयोग कर रहा होता।

आपको कितने निजी रिपॉजिटरी की आवश्यकता है?

यदि आप GitHub का उपयोग करना चाहते हैं, तो एक समाधान हो सकता है कि आप सबसे सस्ती योजना प्राप्त करें और अपने सभी परीक्षण / गैर-सार्वजनिक कोड को रखने के लिए कुछ निजी रिपोज का उपयोग करें। आप अपनी mainपदानुक्रमित संरचना को बनाए रखने के लिए बस अपनी शाखा पर एक फ़ोल्डर संरचना का उपयोग कर सकते हैं, या आप चीजों को अधिक अलग रखने के लिए कई शाखाओं का उपयोग कर सकते हैं।

युक्ति: यदि आप Git के अधिक हालिया संस्करण का उपयोग कर रहे हैं, तो आप विशिष्ट शाखाओं का उपयोग करके खींच सकते हैं git clone -b mybranch --single-branch git://sub.domain.com/repo.git:

हालाँकि, आपको कोड को व्यवस्थित करने के लिए शाखाओं (जैसे फ़ोल्डर्स) का उपयोग करना वास्तव में चीजों को करने का सबसे अच्छा तरीका नहीं है (हालांकि, ऐसा कुछ भी नहीं है जो कहता है कि आप इस मार्ग का नेतृत्व नहीं कर सकते हैं)।

( GitHub शाखाओं के संबंध में संबंधित जानकारी के लिए यहां अपना उत्तर दें। )

फिर से, मुझे लगता है कि कई रिपोज जाने का रास्ता है।

आप अपने आप से पूछ सकते हैं कि क्या आपका कोड वास्तव में निजी होना चाहिए; क्या यह संभव है कि आप बिना किसी नतीजे के उक्त कोड के साथ सार्वजनिक हो सकते हैं?

GitHub पर पुस्तकालयों को रखो, अन्य सभी परियोजनाओं के लिए अपने स्वयं के SVN की मेजबानी करना जारी रखें, ऑफ-साइट बैकअप के लिए गैर-वीसीएस समाधान का उपयोग करें (धब्बा),

यदि आप इस मार्ग पर जाते हैं, तो ड्रॉपबॉक्स (या समान) संस्करण नियंत्रण के कुछ रूप को प्राप्त करने और आपके ऑफ-साइट बैकअप के लिए सिंक करने का एक अच्छा तरीका हो सकता है।

लाइब्रेरी और सॉफ्टवेयर डालें जिनकी योजना मुझे GitHub पर जारी करने की योजना है (क्रमशः सार्वजनिक और निजी के रूप में), अपने स्वयं के SVN को उन परियोजनाओं के लिए होस्ट करना जारी रखें जिनकी मुझे ज्यादा परवाह नहीं है और केवल XYZ को लागू करने के तरीके पर मेरी स्मृति को फिर से ताज़ा करने की संभावना है, तय करें कि मैं उन्हें लिखने के लिए तैयार हूँ अगर मेरे घर में विस्फोट होता है (डबल धब्बा),

यह मुझे इस सवाल पर वापस ले जाता है "क्या आप पहले से ही होस्टिंग के लिए भुगतान करते हैं? यदि हां, तो आप अपना स्वयं का Git होस्ट स्थापित कर सकते हैं"; लाभ होने के नाते, आपके पास गिट छाता के तहत सभी स्रोत कोड हो सकते हैं, भले ही यह सभी एक ही मेजबान पर न हो (यानी, सार्वजनिक सामान जिसे आप दिखाना चाहते हैं, उसके लिए गिटहब का उपयोग करें)।

[GitHub और / या BitBucket] पर सब कुछ रखो, मेरे [GitHub और / या BitBucket] खाते (ट्रिपल ब्लाच) में पॉइंटर्स के कुछ ऑफ़लाइन सेट को बनाए रखने के लिए मुझे जो कुछ भी चाहिए, उसे खोजकर कुछ हास्यास्पद संख्या के साथ सौदा करें।

--- - ऊपर मेरा संक्षिप्त उत्तर देखें। ^^^^^^


0

यहाँ मैं क्या कर रहा हूँ:

  • अलग-अलग GitHub repos में आपको सार्वजनिक करने की इच्छा रखने वाले स्टैंडअलोन प्रोजेक्ट लगाएं। चूँकि GitHub इस समय कोड साझा करने के लिए वास्तविक जगह है, इसलिए यह आपकी परियोजनाओं को अधिक खोज / कांटा बनाने में आसान बना देगा।
  • किसी भी परियोजना के लिए जिसे आप निजी रखना चाहते हैं, उन्हें अपनी पसंद के प्रदाता द्वारा होस्ट किए गए निजी भंडार में रखें। जैसा कि पहले ही उल्लेख किया गया है, Bitbucket इसके लिए एक अच्छा विकल्प है क्योंकि यह असीमित निजी भंडार के लिए अनुमति देता है।
  • "जंक" रेपो में अन्य सभी कोड डालें। इसमें सीखने और परीक्षण के साथ-साथ छोटे स्निपेट के लिए उपयोग किए जाने वाले कोड शामिल हो सकते हैं जो वास्तव में एक परियोजना का हिस्सा नहीं हैं। जब तक इस निजी को रखने का कोई कारण नहीं है, आप इस रेपो को GitHub पर भी होस्ट कर सकते हैं।

    संस्करण नियंत्रण के सभी सामान्य लाभों के अलावा (जो आपके पास पहले से ही SVN के साथ है), अब आपका कोड ऑनलाइन बैकअप हो गया है। यदि आपका कोई भी जंक कोड प्रोजेक्ट में बदल जाता है तो आप इसे अपने ही रेपो में बदल सकते हैं।

    आप इस कोड को अलग-अलग रिपोज में डाल सकते हैं या कुछ फैंसी जैसे git सबमॉड्यूल्स या सबट्रीज़ का उपयोग कर सकते हैं, लेकिन मुझे लगता है कि यह सब केवल एक रेपो में रखना और फ़ोल्डर्स का उपयोग करके इसे व्यवस्थित करना आसान है। यह बहुत सरल है और git काफी तेज है कि रेपो का आकार एक मुद्दा नहीं होना चाहिए।


0

एक संभव तकनीक शाखाओं का उपयोग करना होगा।

जीआईटी रेपो में शाखाएं केवल इशारा करने के लिए संकेत हैं, उन्हें किसी भी तरह से एक-दूसरे से संबंधित होने की आवश्यकता नहीं है। तो आप होस्टिंग सेवा पर एक "मामूली प्रक्रिया" रेपो बना सकते हैं और फिर प्रत्येक परियोजना के लिए उस रेपो में एक शाखा का उपयोग कर सकते हैं। यदि एक छोटी सी परियोजना बढ़ती है, तो आप आसानी से उस शाखा को स्थानांतरित कर सकते हैं, जिसमें उसका रेपो है।

स्थानीय रूप से आप या तो स्थानीय रेपो में शाखाओं को रख सकते हैं (स्थानीय और दूरस्थ रेपो के बीच 1: 1 मैपिंग नहीं होनी चाहिए) या एक ही स्थानीय रेपो है और कई कार्यशील पेड़ों को बनाए रखने के लिए गिट वर्कट्री का उपयोग करें। व्यक्तिगत रूप से मुझे संदेह है कि पहला दृष्टिकोण कम त्रुटि वाला है।


उन्हें एक ही रिमोट रेपो में संग्रहीत करने का मतलब यह नहीं है कि आपको उसी स्थानीय रेपो का उपयोग करना होगा।
पीटर ग्रीन

बस मेरी पिछली टिप्पणी के बारे में भूल जाओ। मैंने सिर्फ git worktreeकमांड के बारे में सीखा , जो आपको एक रिपॉजिटरी के लिए अतिरिक्त काम के पेड़ बनाने की अनुमति देता है, जिससे आपको एक साथ कई शाखाओं की जांच करने की अनुमति मिलती है। इसके साथ, आपके दृष्टिकोण के डाउनसाइड्स मूल रूप से गायब हो जाते हैं: बस प्रत्येक स्वतंत्र शाखा के लिए एक कार्य ट्री बनाएं, और उन्हें स्वतंत्र रिपोज की तरह उपयोग करें। इसे अपने उत्तर में जोड़ने के लिए एक अच्छा विचार हो सकता है :-)
cmaster - reicaate monica

@cmaster, किया ...
पीटर ग्रीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.