GitHub पर खाली शाखा बनाएँ


131

मैं एक नई GitHub शाखा बनाना चाहता हूं, जिसे कहा जाता है release

इस शाखा को खाली करने की आवश्यकता है ! हालांकि, एक्स कमिट के साथ एक मौजूदा शाखा है और मैं इसका प्रतिबद्ध इतिहास नहीं रखना चाहता।

एकमात्र तरीका जो मैंने पाया वह एक स्थानीय --orphan शाखा बनाना है ।



1
तुम ऐसा क्यों करना चाहते हो? आप खाली सेट को "फ्रेड" कह सकते हैं, लेकिन यह अभी भी खाली सेट है।
msw

यदि आप हमें यह बताना चाहते हैं कि आप ऐसा क्यों करना चाहते हैं, तो इससे हमें अच्छे उत्तर देने में मदद मिल सकती है।
टोलर

जब तक आप इसे GitHub सर्वर के साथ अपस्ट्रीम नहीं करेंगे तब तक आप git के साथ जो कुछ भी करेंगे वह स्थानीय होगा git push origin _branch_
जो

जवाबों:


275

--orphanविकल्प में क्या गलत है ? यदि आप एक ऐसी शाखा चाहते हैं जो खाली है और जिसका कोई इतिहास नहीं है, तो यह रास्ता है ...

git checkout --orphan empty-branch

फिर आप स्टेजिंग क्षेत्र में आपके पास मौजूद सभी फ़ाइलों को हटा सकते हैं (ताकि वे प्रतिबद्ध न हों):

git rm -rf .

इस बिंदु पर आपकी मशीन पर एक खाली शाखा है।

इससे पहले कि आप GitHub (या किसी अन्य Git रिपॉजिटरी) पर धक्का दे सकते हैं, आपको कम से कम एक कमिट की आवश्यकता होगी, भले ही उस पर कोई सामग्री न हो (यानी खाली प्रतिबद्ध), क्योंकि आप एक खाली शाखा को धक्का नहीं दे सकते

git commit --allow-empty -m "root commit"

अंत में, इसे रिमोट पर धकेलें, और एक बीयर खोलें

git push origin empty-branch

3
नमस्ते, खाली शाखा बनाने के बाद github रिपॉजिटरी कोई फ़ाइल अंतर नहीं दिखा रहा है जब मैं दूसरी शाखा से पुल-अनुरोध बनाने का प्रयास कर रहा हूं। क्या आप इसका समाधान बता सकते हैं।
राघवेंद्र एस

@ राघवेंद्र मेरा जवाब देखें। मेरी भी यही समस्या थी।
ग्रेग एम। क्रसक

2
शायद कुछ लोगों को इस स्वीकार किए गए उत्तर के साथ कोई समस्या हो रही है क्योंकि यह git add .सभी फ़ाइलों को हटाने और आपके द्वारा प्रतिबद्ध होने से पहले एक कदम याद कर रहा है?
SCoyle

मैंने
बजे

13

--orphan स्थानीय रूप से एक खाली शाखा बनाने के लिए अच्छा है, हालांकि, इसे धक्का देने या अन्य शाखाओं के साथ बातचीत करने के लिए, आपको एक प्रतिबद्ध की आवश्यकता होगी।

एक अनाथ शाखा पर एक नई प्रतिबद्ध बनाना एक अच्छा विचार नहीं है क्योंकि आप अन्य शाखाओं के साथ बातचीत करने में सक्षम नहीं होंगे। अर्थात

git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories

इसके बजाय, आपको मास्टर की पहली प्रतिबद्धता से एक नई शाखा बनाने पर विचार करना चाहिए। यदि कमिट खाली नहीं है, तो आप पहले वाले से पहले एक खाली कमेंट जोड़ सकते हैं, जैसा कि @houtanb द्वारा समझाया गया है।


5

अपनी शाखा के मूल स्थान पर एक खाली प्रतिबद्धता बनाने के लिए आप यहां दिए गए निर्देशों का भी पालन कर सकते हैं master। फिर बस अपनी releaseशाखा बनाएं जहां वह खाली रूट कमिट है।


3

स्वीकृत उत्तर ने मुझे कुछ समस्याओं की ओर अग्रसर किया , इसलिए मैंने ऐसा किया:

$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'

और जो मुझे चाहिए था, वह मिल गया और विलय / पुल-अनुरोध के मुद्दे। मुझे अपनी दूसरी शाखा बनाने के लिए बस एक आधार प्रतिबद्ध करना था


यदि आपकी शाखा में आधार प्रतिबद्ध है, तो परिभाषा के अनुसार, यह एक खाली शाखा नहीं है । अनाथ शाखा बनाते समय आपको क्या समस्याएँ थीं?
सी। ऑगस्टो प्रोएट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.