हरोकू / मास्टर को विभिन्न स्थानीय गिट शाखाओं को कैसे धकेलें


402

हरोकू की सभी शाखाओं को अनदेखा करने की नीति है लेकिन 'मास्टर'।

जबकि मुझे यकीन है कि हरोकू के डिजाइनरों के पास इस नीति के लिए उत्कृष्ट कारण हैं (मैं भंडारण और प्रदर्शन अनुकूलन के लिए अनुमान लगा रहा हूं), एक डेवलपर के रूप में मेरे लिए परिणाम यह है कि मैं जिस भी स्थानीय विषय शाखा पर काम कर रहा हूं, मैं एक आसान तरीका चाहूंगा हरोकू के मास्टर को उस स्थानीय विषय शाखा में बदलने के लिए और हरोकू पर मास्टर लिखने के लिए "git push heroku -f" करें।

क्या मैं के "धक्का Refspecs" खंड पढ़ने से मिला http://progit.org/book/ch9-5.html है

git push -f heroku स्थानीय-विषय-शाखा: refs / heads / master

मुझे वास्तव में जो पसंद है वह कॉन्फ़िगरेशन फ़ाइल में इसे सेट करने का एक तरीका है ताकि "गिट पुश हेरोकू" हमेशा ऊपर हो, स्थानीय-विषय-शाखा को प्रतिस्थापित करने के साथ जो भी मेरी वर्तमान शाखा का नाम हो। अगर किसी को पता है कि कैसे पूरा करने के लिए, कृपया मुझे बताएं!

इसके लिए चेतावनी, निश्चित रूप से यह है कि यह केवल समझदार है अगर मैं केवल एक ही हूं जो उस हरोकू ऐप / रिपॉजिटरी को धक्का दे सकता है। एक परीक्षण या क्यूए टीम विभिन्न उम्मीदवार शाखाओं की कोशिश करने के लिए इस तरह के भंडार का प्रबंधन कर सकती है, लेकिन उन्हें समन्वय करना होगा ताकि वे सभी इस बात पर सहमत हों कि वे किसी भी दिन किस शाखा में इसे आगे बढ़ा रहे हैं।

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

क्या यह काम करेगा?

[दूरस्थ "हरोकू"]
    url = git@heroku.com: my-app.git
    push = + refs / heads / *: refs / heads / master

मैं प्रयोग करना शुरू करने से पहले किसी और अनुभवी से सुनना चाहता हूं, हालांकि मुझे लगता है कि मैं हरकू पर एक डमी ऐप बना सकता हूं और उसके साथ प्रयोग कर सकता हूं।

जब तक हर्को रिपॉजिटरी केवल-लिखने के लिए है, तब तक मुझे वास्तव में परवाह नहीं है। मेरे पास अभी भी एक अलग रिपॉजिटरी है, जैसे GitHub, मेरे सभी काम के बैकअप और क्लोनिंग के लिए।

फुटनोट: यह प्रश्न समान है, लेकिन हरोकू के साथ शाखाओं की रणनीति का उपयोग करते हुए गुड गिट तैनाती के समान नहीं है ?


1
वर्तमान में सबसे अधिक मतदान किया गया उत्तर ऐसा करने का मुहावरेदार तरीका है (और इमो असली सही उत्तर)
सेलाली एडोबोर

Refspecs को पुश करने के बारे में वैकल्पिक https संसाधन: refspecs को पुश करने के बारे में scm प्रलेखन
डायलन लैंड्री

जवाबों:


131

वाइल्डकार्ड का उपयोग करते समय, इसे रिफस्पेक के दोनों किनारों पर मौजूद होना था, इसलिए +refs/heads/*:refs/heads/masterकाम नहीं करेगा। लेकिन आप उपयोग कर सकते हैं +HEAD:refs/heads/master:

git config remote.heroku.push +HEAD:refs/heads/master

इसके अलावा, आप इसे सीधे पुश पुश के साथ कर सकते हैं :

git push heroku +HEAD:master
git push -f heroku HEAD:master

4
इन दो आदेशों में क्या अंतर है या क्या हमें दोनों को करना है
साद मसूद

2
@ सादमासूद: जो git pushआज्ञा देते हैं वही काम करते हैं। देखें git push --helpके अर्थ के लिए -fविकल्प और +refspec में।
क्रिस जॉन्सन

4
@ क्रिस जॉनसन: क्या आप हमें बता सकते हैं कि यहाँ के लोगों की RTFMing के बजाय -f पैरामीटर का क्या मतलब है?
एएचएच

@AHH बल-f के लिए खड़ा है । इसने मेरे लिए जस्सा के जवाब के साथ काम किया ।
श्री ताओ

@ क्रिस जॉनसन: क्या HEAD का उपयोग केवल पूरे इतिहास के बजाय, ऐप के सबसे हालिया रिलीज़ को धक्का देने के लिए किया गया है?
कैमरन विल्बी

1566

Https://devcenter.heroku.com/articles/git#deploying-code देखें

$ git push heroku yourbranch:master

24
एक बल की आवश्यकता हो सकती है।
स्कॉट स्टैफोर्ड

यह अब भी उनके डॉक्स में होने के बावजूद काम नहीं करता है। यहां तक ​​कि बल के साथ, सर्वर यह कहते हुए धक्का खारिज कर देता है कि यह मास्टर शाखा को हटा नहीं सकता है।
डेव मेहान

3
@DaveMeehan अभी भी यह काम करता है। आप ऐसा करने की कोशिश कर रहे हैं git push :masterजो मास्टर शाखा को कुछ भी नहीं लिखकर हटा देता है। यह एक और शाखा के साथ इसे लिखने से अलग है। मास्टर शाखा को हटाने से रोकने के लिए हेरोकू के पास संभवतः सुरक्षा उपाय हैं।
डेनिस

यह एक भयानक समाधान है
अजय कुमार

2
@nxmohamad यह तब तक नहीं होता जब तक कि आपकी शाखा मास्टर शाखा के पीछे न हो और आप हरकोक पर वर्तमान कोड को ओवरराइड नहीं करना चाहते।
रिक्स

64
git push -f heroku local_branch_name:master

3
बाहर देखो, यह उपयोग करता है -fया --force, और यह हमेशा सुनिश्चित करने के लिए सबसे अच्छा है कि आप यह जान लें कि जब आप धक्का देते हैं तो आप क्या कर रहे हैं।
MiFiHiBye

@ tomasz-mazur -f की आवश्यकता क्यों है?
nxmohamad

हां, हमें कुछ मामलों में उपयोग करने की आवश्यकता हो सकती है, जैसे कई इन-प्रोग्रेस शाखाओं के साथ काम करना और जो कुछ भी हेरोकू में बदलना और वर्किंग ब्रांच का परीक्षण करना हो, कृपया सलाह दें कि क्या हमारे पास परीक्षण करने का कोई और बेहतर तरीका है
फहद

यह मेरे कंप्यूटर पर काम करता है, उत्तर के लिए धन्यवाद, वास्तव में यह सिंटैक्स सामान्य गितुब भंडार में मान्य है?
लुक एरन

10

हरोकू / मास्टर को विभिन्न स्थानीय गिट शाखाओं को धक्का देने के लिए सबसे सुरक्षित आदेश।

git push -f heroku branch_name:master

नोट: यद्यपि, आप -f का उपयोग किए बिना धक्का दे सकते हैं, अन्य डेवलपर्स के धक्का के साथ संघर्ष से बचने के लिए -f (बल ध्वज) की सिफारिश की जाती है।


1
क्या आपको नहीं लगता कि बेहतर है कि पहले -f के बिना करें? फिर अगर संघर्ष हो, तो पहले यह पुष्टि कर लें कि उन पर लिखना ठीक है
nxmohamad

7

मेरे लिए, यह काम करता है,

git push -f heroku otherBranch:master

अन्य डेवलपर्स के पुश के साथ संघर्ष से बचने के लिए -f (बल ध्वज) की सिफारिश की जाती है। चूंकि आप अपने संशोधन नियंत्रण के लिए Git का उपयोग नहीं कर रहे हैं, लेकिन केवल परिवहन के रूप में, बल ध्वज का उपयोग करना एक उचित अभ्यास है।

स्रोत: - आधिकारिक डॉक्स


5

यह भी ध्यान दें कि यदि आपका git फ्लो सिस्टम और आपकी सुविधा शाखा का उपयोग किया जा रहा है

feature/mobile_additions

और एक गैंग रिमोट जिसे स्टैगेटोवो कहा जाता है, के बाद हेरोकू को धकेलने का आदेश होगा

git push stagingtwo feature/mobile_additions:master

4

आपको heroku_san की जांच करनी चाहिए , यह इस समस्या को काफी अच्छी तरह से हल करता है।

उदाहरण के लिए, आप कर सकते हैं:

git checkout BRANCH
rake qa deploy

नए सर्वर के लिए एक विषय शाखा को तैनात करने के लिए नए हरोकू उदाहरणों को स्पिन करना आसान बनाता है:

git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates

और निश्चित रूप से आप सरल रेक कार्य कर सकते हैं यदि आप अक्सर कुछ करते हैं।



1

हेरोकू प्रयोगशाला अब एक जीथब ऐड प्रदान करती है कि आप निर्दिष्ट करें कि किस शाखा को धक्का देना है।

इस बीटा फीचर पर हेरोकू का लेखन देखें।

आपको समय-समय पर बीटा टेस्टर के रूप में साइन-अप करना होगा।


0

मुझे लगता है कि यह होना चाहिए

push = refs/heads/*:refs/heads/*

बजाय...

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