GitHub पर एक सार्वजनिक रेपो की एक निजी शाखा है?


127

मेरे पास GitHub रेपो में एक सार्वजनिक PHP परियोजना है, जिसमें सिर्फ एक शाखा (मास्टर) है।

मैं एक अलग शाखा / कांटा रखना चाहता हूं जो मेरे लिए निजी हो (मैंने निजी गिटहब रेपो के लिए भुगतान किया है)। मैं निजी शाखा / कांटे से सार्वजनिक रेपो, और इसके विपरीत में बदलाव को मर्ज करने में सक्षम होना चाहूंगा।

इसे ध्यान में रखते हुए, यहाँ मेरे प्रश्न हैं:

  1. क्या मेरी सार्वजनिक रेपो पर एक निजी शाखा हो सकती है?
  2. क्या मैं अपनी खुद की सार्वजनिक रेपो को अपनी निजी शाखा / कांटे में कांटा कर सकता हूं?
  3. यदि उपरोक्त दोनों संभव हैं, तो आगे का सबसे अच्छा तरीका क्या है? यदि नहीं, तो मुझे कैसे आगे बढ़ना चाहिए?

1
निजी रिपॉजिटरी के रूप में अपने पब्लिक रिपॉजिटरी को फोर्क करने के लिए सबसे अच्छा विचार नहीं है, जहां आप ऐसी कई शाखाएँ बनाते हैं, जिन्हें आप पब्लिक रिपॉजिटरी (और इसके विपरीत) पर पुश नहीं करते हैं?
लेगोलस

1
Thats जो मैं पूछ रहा हूं, मैं सार्वजनिक रेपो की एक प्रति बनाने में सक्षम होना चाहता हूं, लेकिन मेरे अपडेट निजी होने के लिए (जब तक कि मैं विशिष्ट चीजों को सार्वजनिक रूप से वापस नहीं करना चाहता हूं)
छिपकली


@assylias, क्या आप इसे उत्तर के रूप में रख सकते हैं? यह मेरी राय में सबसे अच्छा जवाब है, और मैंने लेख को खोजने से पहले आपकी टिप्पणी पर ध्यान नहीं दिया।
mbh86

@ mbh86 यह वास्तव में एक उत्तर नहीं है, एक कड़ी होने के नाते, और मेरे पास इसे उत्तर में बदलने का समय नहीं है। लेकिन अगर आप उस पृष्ठ की सामग्री का उपयोग यहां (मूल साइट के संदर्भ के साथ) एक उत्तर बनाने के लिए करना चाहते हैं, तो यह निश्चित रूप से अन्य उपयोगकर्ताओं की मदद कर सकता है और आपको मेरा upvote :-) मिलेगा
assylias

जवाबों:


69
  1. अपने रेपो को डुप्लिकेट करें
  2. डुप्लिकेट किए गए रेपो को गीथहब पर एक निजी बनाएं।
  3. अपनी मशीन में निजी रेपो को क्लोन करें
  4. अपने पब्लिक रेपो में एक रिमोट जोड़ें (git Remote add public git@github.com: ...)
  5. अपने सार्वजनिक रेपो के लिए इच्छित कम्यूनों के साथ पुश शाखाएँ, जो नए सार्वजनिक रिमोट हैं। (सुनिश्चित करें कि आप गलती से निजी-केवल कोड नहीं बनाते हैं)
  6. आप 'git fetch public' का उपयोग करके अपने सार्वजनिक रेपो में परिवर्तन ला सकते हैं और फिर उन्हें स्थानीय रूप से मर्ज कर सकते हैं और अपने निजी रेपो (मूल रिमोट) पर धकेल सकते हैं।

डुप्लीकेशन मेरे लिए ठीक काम करता है, हालांकि मुझे यह विपरीत क्रम में करना था, पहले एक निजी रेपो बनाना और फिर कमांड लाइन से सार्वजनिक रेपो की नकल करना। धन्यवाद!
जोएल

104

क्या सार्वजनिक रेपो पर निजी शाखा रखना संभव है?

GitHub पर, आपकी रिपॉजिटरी सार्वजनिक या निजी है; आप केवल एक शाखा को "निजीकरण" नहीं कर सकते।

क्या मैं अपनी खुद की सार्वजनिक रेपो को अपनी निजी शाखा / कांटे में कांटा कर सकता हूं?

आप अपनी सार्वजनिक रेपो को अपनी स्थानीय मशीन, शाखा में आवश्यकतानुसार जमा कर सकते हैं, और अपनी "निजी" शाखाओं को ऊपर की ओर न बढ़ाएं (यह निर्दिष्ट करके कि कौन सी शाखा को मूल में धकेलना है: git push origin masterया git push origin branch-i-want-to-be-public:master)।

आगे का सबसे अच्छा तरीका कौन सा है / मुझे कैसे आगे बढ़ना चाहिए?

आपके सार्वजनिक और निजी विकास दोनों के लिए GitHub का लाभ उठाने के लिए, मैं GitHub के भीतर आपकी सार्वजनिक शाखा को फ़ोर्क करने का सुझाव दूंगा, नए कांटे की सेटिंग को "निजी" में बदल दूंगा, और फिर निजी संस्करण को आपके स्थानीय मशीन के नीचे क्लोन करूँगा। जब आप परिवर्तन सार्वजनिक करने के लिए तैयार हों, तो GitHub पर अपने निजी कांटे पर सब कुछ पुश करें और फिर सार्वजनिक रेपो में शाखाओं का चयन करने के लिए पुल अनुरोधों का उपयोग करें ।

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

यदि आपके पास एक भुगतान किया गया GitHub खाता है, या किसी अन्य सेवा का उपयोग कर रहा है जो सार्वजनिक और निजी कांटे और पुल अनुरोध (जैसे BitBucket ) प्रदान करता है , तो आप अपने कोड को सार्वजनिक करने के लिए उपरोक्त दोनों तरीकों में से किसी एक का उपयोग कर सकते हैं।


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

3
इस दुर्भाग्य का निहितार्थ यह है कि एक निजी "कांटा" से रिपॉजिटरी की सार्वजनिक प्रति में परिवर्तन खींचने के लिए पुल अनुरोधों का उपयोग करना संभव नहीं है।
माइकल जूनियर

6
GitHub अब मुफ्त खातों के लिए असीमित निजी भंडार प्रदान करता है।
नाथन एफ।

1
यह वास्तव में शीर्ष उत्तर नहीं होना चाहिए जो कि वर्कफ़्लो (निजी कांटा से पीआर) की सिफारिश नहीं करता है। @ Mj1531 द्वारा उत्तर एक बेहतर वर्कफ़्लो है।
स्टूज़डेयर

2

एक और उपाय है जो मुझे बेहतर लगता है क्योंकि यह एक ही मशीन पर डुप्लिकेट रिपोज में परिणाम नहीं करता है।

  • जो सामान आप निजी चाहते हैं, उसके साथ एक शाखा बनाएं।
  • GitHub पर एक नया रेपो बनाएं, इसे निजी पर सेट करें।
  • नए GitHub रेपो को अपनी मशीन पर अपने रेपो में दूसरे रिमोट के रूप में जोड़ें।
  • निजी शाखा को दूसरे रिमोट पर पुश करें।

अंतिम परिणाम 2 रीमोट के साथ 1 रिपॉजिटरी है। 1 सार्वजनिक, 1 निजी।
बस आपको सावधान रहने की जरूरत है जिसके अनुसार आप अपने अनुसार नाम को आगे बढ़ाएं।


1

1.) क्या पब्लिक रेपो पर प्राइवेट ब्रांच होना संभव है

मैं जो जानता हूं, उससे नहीं।

2.) क्या मैं अपनी खुद की पब्लिक रेपो को अपनी निजी शाखा में डाल सकता हूँ

नहीं, आप एक एकल शाखा में एक पूर्ण रेपो (1-एन शाखाओं) को कांटा नहीं कर सकते। वास्तव में आप कर सकते हैं, अगर आप सिर्फ पूर्ण रेपो की एक शाखा को कांटे। बस इसे रिमोट के रूप में जोड़ें या क्लोन से शुरू करें।

आपको स्पार्स चेकआउट में भी रुचि हो सकती है ।

3.) यदि उपरोक्त दोनों संभव हैं जो कि आगे का सबसे अच्छा तरीका है

n / a

4.) यदि न तो संभव है तो मुझे कैसे आगे बढ़ना चाहिए?

n / a

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