रिमोट रेपो में स्थानीय गिट शाखा की नकल कैसे करें


127

मैंने अब तक निम्नलिखित कदम उठाए हैं:

  1. एक दूरस्थ गिट रेपो पर क्लोन किया
  2. एक प्रयोग के लिए मास्टर शाखा को शाखा दी
  3. प्रायोगिक शाखा में संपादित / परीक्षण / प्रतिबद्ध कोड

अब, मैं प्रायोगिक को मास्टर में विलय करने के लिए तैयार नहीं हूं। लेकिन मैं इसे दूरस्थ रेपो में वापस धकेलना चाहता हूं क्योंकि यह कुछ सहयोगियों के साथ साझा किया गया भंडार है। मैं उनके लिए यह देखना चाहता हूं कि मैंने प्रायोगिक शाखा में क्या किया है। मैं आमतौर पर SSH के माध्यम से दूरस्थ रेपो तक पहुँचता हूँ।

दूरस्थ रेपो की मास्टर शाखा को प्रभावित किए बिना, मैं दूरस्थ रेपो पर अपनी स्थानीय शाखा को कैसे साझा करूं?


यह लिंक इस पहलू में भी बहुत उपयोगी है। साझा शाखाएँ
विष्णु कुमार

जवाबों:


157

Git पुश मैनुअल पेज के अनुसार :

 git push origin experimental

experimentalस्रोत रिपॉजिटरी (सबसे अधिक संभावना है, यह मिल जाएगा refs/heads/experimental) में मेल खाता एक रेफरी ढूंढें , और refs/heads/experimentalइसके साथ मूल रिपॉजिटरी में उसी रेफरी (जैसे ) को अपडेट करें ।
यदि experimentalदूरस्थ रूप से मौजूद नहीं है, तो इसे बनाया जाएगा

यह समान है:

git push origin experimental:refs/heads/experimental

experimentalवर्तमान experimentalशाखा की प्रतिलिपि बनाकर मूल भंडार में शाखा बनाएँ ।
यह प्रपत्र केवल दूरस्थ नाम में एक नई शाखा या टैग बनाने के लिए आवश्यक है जब स्थानीय नाम और दूरस्थ नाम अलग-अलग हों ; अन्यथा, अपने आप पर रेफरी नाम काम करेगा।

या, जैसा कि गिट टिप में बताया गया है , आप "शाखा का डिफ़ॉल्ट रिमोट" सेट कर सकते हैं:

आप किसी दिए गए शाखा में एक डिफ़ॉल्ट रिमोट असाइन करने के लिए git config का उपयोग कर सकते हैं। इस डिफ़ॉल्ट रिमोट का उपयोग उस शाखा को धक्का देने के लिए किया जाएगा जब तक कि अन्यथा निर्दिष्ट न हो।

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

git config branch.<name>.remote <remote> 

इसे मैन्युअल रूप से निर्दिष्ट करने के लिए उपयोग किया जा सकता है।


जनवरी सुझाव ( git> = 1.7.0 के लिए ) push -u(या push --set-upstream) विकल्प:

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

इस तरह, आपको कोई git config नहीं करना है।

git push -u origin experimental

12
आपको यह सुनिश्चित -uकरने के लिए विकल्प का उपयोग करना चाहिए pushकि आपकी स्थानीय शाखा रिमोट को सार्वजनिक करने के बाद उसे ट्रैक करती है। यदि आप -uविकल्प का उपयोग करना भूल जाते हैं , तो आप git push -uशाखा में बाद में टाइप कर सकते हैं , फिर git pullकाम करेंगे।
Jan

मैंने नोट किया है कि जब आप ऐसा करते हैं git push origin experimental, तो किसी भी पैक के अपलोड होने का कोई सबूत नहीं है। ऐसा लगता है कि रिमोट में पहले से ही आपके पहले के पुश से सारी सामग्री है; यह सिर्फ रेफरी के लिए झुका दिया जाना है
कज़

@ काज: यह सभी सामग्री होती अगर उन नए कमिट्स को पहले ही रिमोट की दूसरी ब्रांच में धकेल दिया जाता। उस स्थिति में, git push origin experimentalबस experimentalरिमोट पर शाखा का निर्माण करेगा ।
वॉनक

धन्यवाद! आपका उत्तर बहुत मददगार था।
हक्रे

15

यदि आपकी शाखा का नाम है experimental, और रिमोट का नाम है origin, तो यह है

git push origin experimental

उपरोक्त टिप्पणी के समान है, लेकिन क्या इससे रिमोट रेपो पर प्रायोगिक शाखा का निर्माण होता है, या यह रिमोट के मास्टर को धक्का देगा?
Coocoo4Cocoa

1
यह प्रायोगिक शाखा को धक्का देता है और स्थानीय तरफ या दूरस्थ रूप से मास्टर को स्पर्श नहीं करता है
जॉन Douthat

1

git push -u <remote-name> <branch-name>यदि नई बनाई गई शाखा एक ही रेपो से उत्पन्न नहीं होती है, अर्थात यदि आपने नई शाखा का उपयोग करके नहीं बनाया है git checkout -b new_branch, तो यह काम नहीं करेगा।

उदाहरण के लिए, मैंने दो अलग-अलग रिपॉजिटरी को स्थानीय रूप से क्लोन किया था और मुझे रेपो 2 / ब्रांच 1 को रेपो 1 / कॉपी करना था और फिर इसे भी पुश करना था।

इस लिंक ने मेरी स्थानीय शाखा (दूसरे रेपो से क्लोन) को मेरे दूरस्थ रेपो पर धकेलने में मदद की:


0

यहाँ github दूरस्थ प्रबंधन के लिए आधिकारिक github पृष्ठ है http://github.com/guides/push-a-branch-to-github । यह आपके सभी सवालों के जवाब देने में आपकी मदद करेगा।


क्या वह इसे मास्टर शाखा में स्थानांतरित नहीं करता है, या यह एक मूल / same_branch_name_as_local मूल रूप से बनाएगा?
Coocoo4Cocoa

0

tl; डॉ

$ git push --set-upstream origin your_new_branch

और जानकारी

आपके द्वारा कुछ कमिट करने के बाद:

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

आप अपनी शाखा को ऊपर बताए गए रीमोसाइट्स में से एक में एक अपस्ट्रीम निर्दिष्ट करते हुए धक्का देते हैं:

$ git push --set-upstream REMOTE YOUR_BRANCH

द्वारा देखे जा सकते हैं

$ git remote -v

आमतौर पर, आपके पास एकल डिफ़ॉल्ट रिमोट होगा origin। तो आप इस तरह दिखेंगे:

$ git push --set-upstream origin your_new_branch

और सभी परिणामी धक्का बस के साथ बनाया जा सकता है git push

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