विशिष्ट शाखा को धक्का


104

इस प्रश्न को पढ़ने के बाद भी: git-push-current-branch , मुझे अभी भी यह पता लगाने में कठिनाई हो रही है कि मुझे अपना git पुश कमांड कैसे लिखना चाहिए। जैसा कि प्रश्न लिंक में बताया गया है, यह प्रलेखन से स्पष्ट नहीं है।

मैं अपने 'वास्तविक दुनिया' उदाहरण का उपयोग करना चाहूंगा। जब मैं git statusअपनी शाखा के शीर्ष स्तर पर एक कमांड करता हूं तो मैं निम्नलिखित देखता हूं :

शाखा amd_qlp_tester पर

आपकी शाखा 5 हिट्स से 'मूल / amd_qlp_tester' से आगे है।

आदि...

इसलिए मेरी शाखा का नाम है, amd_qlp_testerलेकिन यह मुख्य शाखा से "शाखाबद्ध" था (यदि मेरे गलत शब्द हैं तो यह मेरी एसवीएन पृष्ठभूमि के कारण है)। लेकिन इसके बाद `मूल / amd_qlp_testser 'नाम भी है

तो मैं अपने पुश कमांड को कैसे वाक्यांश दूं?

क्या यह निम्नलिखित में से कोई है:

git push origin/amd_qlp_tester
git push origin amd_qlp_tester
git push amd_qlp_tester
git push origin
git push

जवाबों:


93

git push origin amd_qlp_testerआपके लिए काम करेगा। यदि आप बस टाइप करते हैं git push, तो वर्तमान शाखा का रिमोट डिफ़ॉल्ट मान है।

धक्का का सिंटेक्स इस तरह दिखता है - git push <remote> <branch>। यदि आप .git/configफ़ाइल में अपने रिमोट को देखते हैं, तो आपको एक प्रविष्टि दिखाई देगी [remote "origin"]जो रिपॉजिटरी के url को निर्दिष्ट करती है। इसलिए, कमांड के पहले भाग में आप बताएंगे कि इस प्रोजेक्ट के लिए रिपॉजिटरी कहां मिलनी है, और फिर आप सिर्फ एक शाखा निर्दिष्ट करते हैं।


इसके लिए धन्यवाद :), क्या आप बता सकते हैं कि वे दो अलग "शब्द" क्यों हैं जब डिट स्थिति विवरण इसे एक पथ के रूप में प्रदर्शित करता है, अर्थात यह क्यों है origin amd_qlp_testserऔर नहींorigin/amd_qlp_tester
code_fodder

डिफ़ॉल्ट "रिमोट" वर्तमान शाखा के कॉन्फ़िगरेशन पर आधारित है (इस मामले में यह वास्तव में होगा origin)। शाखा (तों) को डिफॉल्ट (git के वर्तमान संस्करणों में) को धक्का देने के लिए :यदि वह परेशान है, जिसका अर्थ है matching, लेकिन यह भविष्य में बदलने वाला है।
torek

मैं थोड़ा भ्रमित हूं, मैं v2.10 का उपयोग कर रहा हूं, जब मैं टाइप git pushकरता हूं तो यह सभी ट्रैक की गई शाखाओं को धकेलने की कोशिश करता है, इसके विपरीत जो आपने कहा था ("वर्तमान शाखा का रिमोट डिफ़ॉल्ट मान है")।
रॉबर्टो

Git 2.x को simpleपुश रणनीति का उपयोग करना चाहिए जिसका अर्थ है कि केवल वर्तमान शाखा को धक्का देगा। blogs.atlassian.com/2014/06/happened-git-2-0-full-goodies
पेट्र मेंसिक

fatal: Couldn't find remote ref branch-name-here
doug65536

115

यदि आपकी स्थानीय शाखा और दूरस्थ शाखा एक ही नाम है, तो आप इसे कर सकते हैं:

git push origin branchName

जब आपका स्थानीय और दूरस्थ शाखा का नाम अलग-अलग होता है, तो आप इसे कर सकते हैं:

git push origin localBranchName:remoteBranchName

यह बहुत उपयोगी था, खोजने में मुश्किल :)
पे ड्रो

हाँ, आप सही हैं, याद रखना भी मुश्किल है!
इमरानमदर

8

आपके द्वारा लिंक किए गए प्रश्न के उत्तर सभी गिट को कॉन्फ़िगर करने के बारे में हैं ताकि आप बहुत कम git pushकमांड दर्ज कर सकें और उन्हें जो कुछ भी आप चाहते हैं, वह कर सकें। जो बहुत अच्छा है, यदि आप जानते हैं कि आप क्या चाहते हैं और Git-Ese में कैसे जादू करें, लेकिन आप नए हैं! :-)

आपके मामले में, पेट्र मेंसिक का जवाब सही है (ठीक है, "ए")। यहाँ पर क्यों:

नाम "रिमोट" (जैसे, ) को खोजने के लिए कमांड आपकी फ़ाइल में चारों ओर जड़ें । कॉन्फ़िगरेशन फ़ाइल सूची:git push remote.git/configorigin

  • जहां (URL- वार) वह रिमोट "रहता है" (जैसे, )ssh://hostname/path
  • अगर धक्का अलग है, अगर अलग है
  • क्या धक्का दिया जाता है, अगर आप यह नहीं कहते कि किस शाखा को आगे बढ़ाया जाए
  • जब आप दौड़ते हैं तो क्या होता है git fetch remote

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

इनके साथ मुद्दा यह है कि लोगों ने समय के साथ, "उचित" के रूप में अपने दिमाग को बदल दिया है। तो अब (आपके संस्करण के गिट पर निर्भर करता है और क्या आपने चीजों को विस्तार से कॉन्फ़िगर किया है), git भविष्य में बदलने वाली चूक के बारे में बहुत सारी चेतावनी दे सकता है। "पुश करने के लिए शाखा" का नाम जोड़ने - amd_qlp_tester- (1) इसे बन्द कर देता है, और (2) केवल एक शाखा को धकेलता है।

यदि आप अधिक आसानी से धक्का देना चाहते हैं, तो आप ऐसा कर सकते हैं:

git push origin

या और भी:

git push

लेकिन क्या आप जो चाहते हैं, वह इस बात पर निर्भर करता है कि क्या आप "प्रारंभिक गिट लेखकों" से सहमत हैं कि मूल चूक उचित हैं, या "बाद में गिट लेखक" जो मूल चूक उचित नहीं हैं। इसलिए, जब आप सभी कॉन्फ़िगरेशन सामान (अंततः) करना चाहते हैं, तो आपके द्वारा लिंक किए गए प्रश्न (और उत्तर) देखें।

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


1
स्पष्टीकरण के लिए धन्यवाद, मुझे लगता है कि मेरे पास अभी स्पष्ट है। मुझे सटीक रहना पसंद है इसलिए मैं git push origin amd_qlp_testerतब तक चिपके रहूंगा जब तक मुझे अधिक उन्नत सामान करने की आवश्यकता नहीं है :)
code_fodder

2

मैं एक अद्यतन उत्तर जोड़ना चाहूंगा - अब मैं थोड़ी देर के लिए git का उपयोग कर रहा हूं, मुझे लगता है कि मैं अक्सर किसी भी पुश करने के लिए निम्न कमांड का उपयोग कर रहा हूं (उदाहरण के रूप में मूल प्रश्न का उपयोग करके):

  • git push origin amd_qlp_tester- रिमोट में स्थित शाखा को धक्का दिया जाता है जिसे originरिमोट-शाखा कहा जाता है amd_qlp_tester
  • git push -u origin amd_qlp_tester- पिछले एक के समान, लेकिन स्थानीय शाखा को दूरस्थ शाखा से जोड़ने वाला अपस्ट्रीम सेट करता है ताकि अगली बार आप केवल उपयोग कर सकें git push/pullयदि पहले से ही लिंक नहीं है (केवल एक बार करने की आवश्यकता है)।
  • git push - एक बार जब आप अपस्ट्रीम सेट कर लेते हैं तो आप इस छोटे संस्करण का उपयोग कर सकते हैं।

नोट -u विकल्प --set-upstream- का लघु संस्करण है - वे समान हैं।

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