सवाल आप रिमोट गिट शाखा कैसे बनाते हैं?


मैंने एक स्थानीय शाखा बनाई जिसे मैं अपस्ट्रीम 'धक्का' देना चाहता हूं। नव निर्मित रिमोट शाखा को ट्रैक करने के तरीके पर स्टैक ओवरफ़्लो पर एक समान प्रश्न है।

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

  • मुझे यह कैसे करना है? (मेरी Google खोज कुछ भी नहीं आती थी)।
  • मैं अपने सहयोगियों को अपस्ट्रीम रिपोजिटरी से खींचने के लिए कैसे कहूंगा?

गिट 2.0 के साथ अद्यतन एक आसान जवाब है मैंने नीचे लिखा है: https://stackoverflow.com/a/27185855/109305


2712
2017-10-05 09:21


मूल


क्या किसी ने कभी आपको दूसरा प्रश्न जवाब दिया? >> और मैं अपने सहयोगियों को अपस्ट्रीम रिपोजिटरी से खींचने के लिए कैसे कहूंगा? - milkplus
संभवतः संबंधित: प्रो गिट: 3.5 गिट ब्रांचिंग - रिमोट शाखाएं।
@milkplus get fetch --all रिमोट साइड पर नई शाखाएं लाती हैं (लेकिन केवल एक get fetch --prune हटाए गए दूरस्थ शाखाओं के स्थानीय रूप से संदर्भ हटा देता है)। मुझे लगता है, या तो यह स्वचालित रूप से उनके द्वारा स्थापित किया जाना चाहिए, या आप उन्हें मौखिक रूप से बात करनी है। - peterh
के संभावित डुप्लिकेट मैं एक नई स्थानीय शाखा को रिमोट गिट भंडार में कैसे दबा सकता हूं और इसे ट्रैक भी कर सकता हूं? - Trevor Boyd Smith


जवाब:


सबसे पहले, आप स्थानीय रूप से अपनी शाखा बनाते हैं:

git checkout -b <branch-name> # Create a new branch and check it out

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

git push <remote-name> <branch-name> 

कहा पे <remote-name> आमतौर पर है origin, वह नाम जो रिमोट को देता है, जिसे आपने क्लोन किया है। आपके सहयोगी तब उस शाखा को खींचेंगे, और यह स्वचालित रूप से स्थानीय रूप से बनाया जाएगा।

नोट हालांकि औपचारिक रूप से, प्रारूप है:

git push <remote-name> <local-branch-name>:<remote-branch-name>

लेकिन जब आप एक को छोड़ देते हैं, तो यह मानता है कि दोनों शाखा नाम समान हैं। एक शब्द के रूप में यह कहा सावधान, केवल निर्दिष्ट करने की गंभीर गलती मत करो :<remote-branch-name> (कोलन के साथ), या रिमोट शाखा हटा दी जाएगी!

तो बाद में git pull पता चलेगा कि क्या करना है, आप इसके बजाय उपयोग करना चाहते हैं:

git push --set-upstream <remote-name> <local-branch-name> 

जैसा कि नीचे वर्णित है, --set-upstream विकल्प अपस्ट्रीम शाखा सेट अप करता है:

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


3296
2017-10-05 09:29



ध्यान दें कि गिट का डिफ़ॉल्ट व्यवहार धक्का देना है मेल मिलाना रेफरी, तो git push <remote> यदि शाखा मौजूद नहीं है तो शाखा को धक्का नहीं देगा <remote>। - Jakub Narębski
आप उपयोग करना चाह सकते हैं git push -u <remote-name> <branch-name> इसके बजाय, एक बाद में git pull पता चलेगा कि क्या करना है। - Bart Schuller
सर्वर नाम को स्पष्ट रूप से निर्दिष्ट करने के बजाय, आप बस उपयोग कर सकते हैं origin, जिसका अर्थ है "सर्वर मुझे इस रेपो से बाकी मिला": इस प्रकार git push origin <branch-name>। - jpatokal
यदि आप इसका उपयोग करना भूल जाते हैं -u विकल्प, आप बस टाइप कर सकते हैं git push -u बाद में शाखा में git pull काम करेगा। - Jan
यह सब एक साथ डालें, git push -u origin <local-branch-name> क्या मेरे लिए काम किया है। - Samo


सबसे पहले, आपको स्थानीय रूप से अपनी शाखा बनाना होगा

git checkout -b your_branch

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

git push -u origin your_branch

Teammates अपनी शाखा तक पहुंच सकते हैं, कर कर:

git fetch
git checkout origin/your_branch

आप शाखा में काम करना जारी रख सकते हैं और जब भी आप गिट पुश के लिए तर्क पारित किए बिना धक्का दे सकते हैं (तर्कहीन गिट पुश मास्टर को रिमोट मास्टर को धक्का दे, आपके_ब्रैंच स्थानीय को रिमोट your_branch, आदि ...)

git push

टीमेंट्स आपकी शाखा को काम करके धक्का दे सकती हैं और फिर स्पष्ट रूप से धक्का दे सकती हैं

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

या गिट पुश के तर्कों से बचने के लिए शाखा को ट्रैक करना

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push

797
2017-07-26 01:09



यदि गिट आपके लिए बहुत जटिल दिखता है, तो मैं आपको ड्रॉपबॉक्स या Google ड्राइव का उपयोग करने की सलाह देता हूं, वास्तव में, यह बहुत आसान है कि गिट और अभी भी संस्करण / आदि हैं ... - dseminara


सरल गिट 2.0+ समाधान:

के रूप में गिट 2.0 व्यवहार आसान हो गया है:

आप गिट को कॉन्फ़िगर कर सकते हैं push.default = current जीवन को आसान बनाने के लिए:

मैंने इसे अभी जोड़ा है, इसलिए मैं सिर्फ एक नई शाखा अपस्ट्रीम को दबा सकता हूं

$ git push -u

-u उसी नाम की दूरस्थ शाखा को ट्रैक करेगा। इस कॉन्फ़िगरेशन के साथ आप गिट पुश के दूरस्थ संदर्भ को स्वतः अनुमान लगाएंगे। से git.config दस्तावेज:

push.default 

अगर कोई रेफस्पेक स्पष्ट रूप से दिया गया है तो एक्शन गिट पुश को परिभाषित करना चाहिए।

push.default = current - मौजूदा शाखा को शाखा के साथ अद्यतन करने के लिए धक्का दें   प्राप्त करने वाले अंत पर एक ही नाम। केंद्रीय और गैर-केंद्रीय वर्कफ़्लो दोनों में काम करता है।

मेरे लिए, यह मेरे दिन-प्रतिदिन गिट वर्कफ़्लो का एक अच्छा सरलीकरण है। कॉन्फ़िगरेशन सेटिंग 'सामान्य' उपयोग केस का ख्याल रखती है जहां आप स्थानीय रूप से शाखा जोड़ते हैं और इसे दूरस्थ रूप से बनाना चाहते हैं। इसके अलावा, मैं सिर्फ स्थानीय शाखाओं को आसानी से रीमोट से बना सकता हूं git co remote_branch_name (उपयोग करने के विरोध में --set-upstream-to झंडा)।

मुझे यह प्रश्न पता है और स्वीकृत उत्तर पुराने हैं, लेकिन व्यवहार बदल गया है ताकि अब आपके वर्कफ़्लो को सरल बनाने के लिए कॉन्फ़िगरेशन विकल्प मौजूद हों।

अपनी वैश्विक गिट कॉन्फ़िगरेशन में जोड़ने के लिए, इसे कमांड लाइन पर चलाएं:

$ git config --global push.default current

242
2017-11-28 09:46



मुझे लगता है git push -u origin HEAD उत्तर के रूप में यहाँ टाइप करने के लिए बहुत अधिक होने के बिना थोड़ा और वर्बोज़ (आप जो भी कर रहे हैं उसे लिखते हैं)। इसके अलावा, ए git push -u शाखा के साथ बनाया गया था, तो अतिरिक्त तर्क के बिना मेरे लिए काम नहीं किया -t - Qw3ry


जैसा कि पिछले उत्तरों में कहा गया है,

git push <remote-name> <local-branch-name>:<remote-branch-name>

एक स्थानीय शाखा को धक्का देने के लिए पर्याप्त है।

आपके सहयोगी, इस आदेश के साथ सभी दूरस्थ शाखाओं (नए सहित) खींच सकते हैं:

git remote update

फिर, शाखा में परिवर्तन करने के लिए, सामान्य प्रवाह:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>

65
2017-12-27 14:12





वर्तमान शाखा के आधार पर स्थानीय रूप से एक नई शाखा बनाएं:

git checkout -b newbranch

जैसा कि आप सामान्य रूप से करेंगे, किसी भी बदलाव को कम करें। फिर, इसे अपस्ट्रीम दबाएं:

git push -u origin HEAD

यह वर्तमान शाखा को उसी नाम की शाखा में धक्का देने के लिए एक शॉर्टकट है origin और इसे ट्रैक करें ताकि आपको निर्दिष्ट करने की आवश्यकता न हो origin HEAD भविष्य में।


49
2018-02-24 14:58



इससे मेरे मामले में मदद मिली: git push -u origin HEAD। मुझे लगता है कि यह सबसे स्पष्ट तरीका है। - Scadge
हाँ, आपको कभी भी याद नहीं है कि आपने आखिरी बार एक शाखा के रूप में टाइप किया था, इसलिए यह रास्ता है। - marksyzm
@marksyzm अगर आपको याद नहीं है कि आप किस शाखा पर हैं या आपने इसका नाम क्या रखा है, तो शायद आपको बिल्कुल धक्का नहीं देना चाहिए! कम से कम, बिना दौड़ के git status प्रथम। - Zenexer
हाँ, यह सुनिश्चित करना होगा कि दुनिया उस धक्का पर विस्फोट नहीं करेगी; मैं सहमत हूँ। - marksyzm
एक ही समय में एक ट्रैकिंग शाखा के साथ-साथ एक दूरस्थ शाखा बनाने का यह सबसे प्रभावी तरीका है। मैं भी जोड़ना चाहूंगा git remote show origin नए ट्रैकिंग / ट्रैक किए गए रिश्ते को देखने के लिए तीसरे चरण के रूप में। - hb5fa


यदि आप वास्तव में स्थानीय व्यक्ति के बिना रिमोट शाखा बनाना चाहते हैं, तो आप इसे इस तरह से कर सकते हैं:

git push origin HEAD:refs/heads/foo

यह आपके सिर को शाखा में जो कुछ भी धक्का देता है उसे धक्का देता है foo वह रिमोट पर मौजूद नहीं था।


32
2017-11-25 15:29



यह पूरी तरह से मेरे विजुअल स्टूडियो को उस बिंदु पर भ्रमित कर रहा है जहां यह सही ढंग से शुरू नहीं होगा। टीम एक्सप्लोरर बिल्कुल लोड नहीं होगा, लेकिन बाकी सब कुछ त्रुटियों को फेंकने वाले बोनकर्स भी चला गया। सिर्फ आपकी जानकारी के लिए। - Josh
ऐसा लगता है जैसे इसे काम करना चाहिए, लेकिन जब मैंने वास्तव में कोशिश की, तो हमारे गिटलैब सर्वर ने शाखा को परिणाम के रूप में नहीं पहचाना। - JosephH
रिमोट पर किस शाखा को ब्रांच किया गया है? क्या होगा अगर मैं foo2 से शाखा बंद करना चाहता हूं? क्या यह संभव है? धन्यवाद। - user674669


यदि आप वर्तमान शाखा से शाखा बनाना चाहते हैं

git checkout -b {your_local_branch_name} 

आप एक दूरस्थ शाखा से एक शाखा चाहते हैं, आप कोशिश कर सकते हैं

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

यदि आप परिवर्तनों के साथ कर रहे हैं तो आप फ़ाइल जोड़ सकते हैं।

git add -A or git add <each_file_names>

फिर स्थानीय रूप से एक प्रतिबद्धता करें

git commit -m 'your commit message'

जब आप रिमोट रेपो को धक्का देना चाहते हैं

git push -u origin <your_local_branch_name>

सब एक साथ होगा

git checkout -b bug_fixes 

या यदि आप रिमोट शाखा से शाखा बनाना चाहते हैं तो कहें विकास 

गिट चेकआउट -बी कंप्यूटर प्रोग्राम या प्रणाली में बग को दूर करना मूल/विकास

आप शाखा को रिमोट रेपो से पुश कर सकते हैं

git push -u origin **bug_fixes**

जब भी आप अपनी शाखा को किसी अन्य शाखा से अपडेट करना चाहते हैं तो कहें स्वामी

git pull origin master


23
2018-05-01 06:12





सबसे पहले आप स्थानीय रूप से शाखा बनाते हैं:

git checkout -b your_branch

और फिर शाखा को दूरस्थ रूप से बनाने के लिए:

git push --set-upstream origin your_branch

नोट: यह गिट के लेटेस संस्करणों पर काम करता है:

$ git --version
git version 2.3.0

चीयर्स!


22
2018-04-21 23:43



यह केवल आदेश द्वारा उत्पन्न सहायता पाठ है git push जब आपकी स्थानीय शाखा को रिमोट द्वारा ट्रैक नहीं किया जाता है। - nurettin


अपनी स्थानीय मशीन पर शाखा बनाएं और इस शाखा में स्विच करें:

$ git checkout -b [name_of_your_new_branch]

गिटूब पर शाखा पुश करें:

$ git push origin [name_of_your_new_branch]

जब आप अपनी शाखा में कुछ करना चाहते हैं, तो अपनी शाखा में रहना सुनिश्चित करें।

आप उपयोग करके बनाई गई सभी शाखाएं देख सकते हैं:

$ git branch

जो दिखाएगा:

* approval_messages
  master
  master_clean

अपनी शाखा के लिए एक नया रिमोट जोड़ें:

$ git remote add [name_of_your_remote] 

अपनी प्रतिबद्धता से अपनी शाखा में परिवर्तन पुश करें:

$ git push origin [name_of_your_remote]

आधिकारिक भंडार से मूल शाखा अद्यतन होने पर अपनी शाखा अपडेट करें:

$ git fetch [name_of_your_remote]

फिर आपको परिवर्तनों को मर्ज करने के लिए आवेदन करने की आवश्यकता है, यदि आपकी शाखा विकसित होने से व्युत्पन्न है तो आपको ऐसा करने की आवश्यकता है:

$ git merge [name_of_your_remote]/develop

अपने स्थानीय फाइल सिस्टम पर एक शाखा हटाएं:

$ git branch -d [name_of_your_new_branch]

अपने फाइल सिस्टम पर स्थानीय शाखा को हटाने के लिए मजबूर करने के लिए:

$ git branch -D [name_of_your_new_branch]

जिथूब पर शाखा हटाएं:

$ git push origin :[name_of_your_new_branch]

यहां सभी जानकारी

अन्य मौजूदा परियोजना


16
2018-05-27 11:39





सबसे आसान समाधान ... ड्रम रोल। गिट संस्करण 2.10.1 (ऐप्पल गिट -78)

1) git checkout -b localBranchNameThatDoesNotExistInRemote

2) Do your changes , and go a git commit 

3) git push origin localBranchNameThatDoesNotExistInRemote --force

N.B. - जिस शाखा को आपने अभी अपने स्थानीय वातावरण में बनाया है, और दूरस्थ गैर-मौजूदा शाखा जहां आप धक्का देने की कोशिश कर रहे हैं, एक ही नाम होना चाहिए


13
2018-03-18 06:23



तुम्हारे सुझाव के लिए धन्यवाद। भले ही आप इसे एक आसान समाधान कहते हैं, फिर भी मुझे लगता है git push -u रास्ता आसान है। यह आवश्यक है कि आपके पास एक वैश्विक कॉन्फ़िगरेशन लाइन है, देखें stackoverflow.com/a/27185855/109305। मैं उपयोग करता हूं git push -u लगातार काम करते समय, 99% मेरे उपयोगकेस को कवर करता है। - Jesper Rønn-Jensen


अब गिट के साथ, आप सही शाखा में होने पर बस टाइप कर सकते हैं

git push --set-upstream origin <remote-branch-name>

और गिट आपके लिए मूल शाखा बनाते हैं।


8
2017-10-27 17:05



-u -set-upstream के लिए छोटा है .. तो कमांड गिट पुश -यू मूल <रिमोट-शाखा-नाम> हो सकता है - Uncaught Exception
घातक: 'मूल' एक गिट भंडार प्रतीत नहीं होता है - Dmitry Grinko
शायद आपको अपने गिट भंडार की उत्पत्ति सेट करनी होगी - Maurizio Brioschi


लोकप्रिय प्रश्न

TSQL का उपयोग कर डेटाबेस में सभी तालिकाओं को कैसे हटाया जाए? वेक्टर या कॉलम में दूसरे (तीसरे ...) उच्चतम / निम्नतम मूल्य को खोजने का सबसे तेज़ तरीका एक पोस्ट-पुल विलय प्रतिबद्ध संदेश के लिए मुझे संकेत क्यों दे रहा है? "ऐप-रिलीज.एपीके" इस डिफ़ॉल्ट जेनरेट एपीके नाम को कैसे बदलें स्ट्रिंग इंटरपोलेशन रूबी में क्यों काम करता है जब कोई घुंघराले ब्रेसिज़ नहीं होते हैं? 2.0 अनुकूल ऐप में आप वैकल्पिक रूप से आईफोन ओएस 3.0 सुविधाओं का उपयोग कैसे करते हैं? असहज त्रुटि: Invariant उल्लंघन: findComponentRoot (..., ... $ 110): तत्व खोजने में असमर्थ। इसका शायद मतलब है कि डीओएम अप्रत्याशित रूप से उत्परिवर्तित था