2012-12-21 12 views
30

प्रतिबद्धता में किए गए परिवर्तन, प्रदर्शन प्रतिबद्धता में संशोधन। एक धक्का है और मैं त्रुटि मिलती है:गिट/गेरिट, पुश रिमोट ने कोई बदलाव नहीं किया

! [remote rejected] master -> refs/for/master (no changes made) 

प्रतिबद्ध संदेश में परिवर्तन आईडी की जांच की गई और इसके अभी भी एक मान्य करते हैं।

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

संपादित करें: यह सीधे गिटिट को दबा रहा है, सीधे गिट नहीं।

मैं चल रहा हूँ:

git push origin master:refs/for/master 

और उत्पत्ति का विवरण प्राप्त करने की परिणाम (कंपनी के विवरण को संपादित किया) के साथ कर रहे हैं:

$ git remote show origin 
* remote origin 
    Fetch URL: ssh://[email protected]:29418/myrepo 
    Push URL: ssh://[email protected]:29418/myrepo 
    HEAD branch: master 
    Remote branch: 
    master tracked 
    Local branch configured for 'git pull': 
    master rebases onto remote master 
    Local ref configured for 'git push': 
    master pushes to master (up to date) 
+0

आप किस पुश कमांड को चला रहे हैं, और आप स्थानीय रूप से कौन सी शाखा हैं? – Amber

+0

मैं स्थानीय स्तर पर मास्टर पर हूं, और मैं 'गिट पुश मूल मास्टर चला रहा हूं: refs/for/master' और मूल वैध fetch और पुश URL के साथ स्थापित किया गया है। – edwardmlyte

+0

यह देखते हुए कि आप 'refs/head/... 'वाक्यविन्यास के बजाय' refs/for/... 'का उपयोग कर रहे हैं, क्या आप गेरिट का उपयोग कर रहे हैं? यदि ऐसा है, तो यह आपके प्रश्न के लिए बेहद प्रासंगिक होगा और इसका उल्लेख किया जाना चाहिए। – Amber

उत्तर

45

यह समस्या उन कार्रवाइयों के कारण है जो मैंने पहले की थीं। मैं push को एक नया बदलाव करने की कोशिश कर रहा था, जो बदलाव के शीर्ष पर था, जो अभी भी समीक्षा के लिए तैयार था, जो माता-पिता भी समीक्षा के लिए तैयार थे।

Trunk ------ Parent A ----- Parent B ----- New change 
(merged)  (unmerged)  (unmerged) 

मैं cherry-pick का इस्तेमाल किया था स्थानीय स्तर पर (जनक ए और जनक बी) इन दो परिवर्तन प्राप्त करने के लिए, और फिर एक तिहाई cherry-pickpush प्रयास करने से पहले एक स्थानीय शाखा से मेरे परिवर्तन प्राप्त करने के लिए। यही कारण है कि इस मुद्दे का कारण बन गया, क्योंकि मेरा निजी परिवर्तन अनिवार्य रूप से इतिहास को फिर से लिखने की कोशिश कर रहा था।

सही प्रक्रिया केवल pull ट्रंक बी पर ट्रंक पर होगी। यह स्वचालित रूप से ट्रंक और इसके बीच किसी भी काम को खींचता है (इस मामले में केवल अभिभावक ए)। फिर cherry-pick उस पर मेरा नया परिवर्तन और push ठीक काम करेगा।

+8

हमें आज इसके साथ कोई समस्या थी।समस्या यह थी कि हमारे पास गेरिट में था: चेंज 1 (विलय) - चेंज 2 (अनमर्ज) - चेंज 3 (अनमर्ज) हम चेंज 3 पर एक नया पैच सेट प्रकाशित करना चाहते थे लेकिन इसे अस्वीकार कर दिया गया था। संदेश: ''! [रिमोट अस्वीकार] मास्टर -> रेफरी/के लिए/मास्टर (कोई बदलाव नहीं किया गया) '' हमारे सिर खरोंचने के बाद हमने पाया कि हमने स्थानीय रूप से पुनर्जीवित किया था और चेंज 2 को भी एक नया प्रतिबद्ध हैश मिला था लेकिन इसमें कोई नया बदलाव नहीं था। हमने इसे फिर से स्थानीय रूप से इंटरैक्टिव रीबैस करके हल किया और प्रतिबद्ध संदेश के अंत में एक चरित्र जोड़कर चेंज 2 को दोहराया। उसके बाद प्रकाशित करना ठीक था। – mortb

2

ऐसा लगता है कि आप सब कुछ कर रहे के रूप में सही ढंग से जहां तक ​​आप सत्यापित करते हैं कि आपने एक बदलाव किया है जिसे गेरिट को उठाया जाना चाहिए।

git push origin master:refs/for/master

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

git push origin HEAD:refs/for/master

HEAD एक शॉर्टकट का प्रतिनिधित्व करता है कि आपके वर्तमान Git में प्रतिबद्ध है।

+0

उस शॉर्टकट के साथ एक ही त्रुटि। क्या HEAD वर्तमान शाखा में वर्तमान परिवर्तन, या केवल मास्टर शाखा में वर्तमान परिवर्तन का संदर्भ देता है? – edwardmlyte

+1

HEAD आपके वर्तमान परिवर्तन, अवधि को संदर्भित करता है। जिस शाखा पर आप हैं, इससे कोई फर्क नहीं पड़ता। यदि HEAD के साथ धक्का देना मदद नहीं करता है, तो मुझे संदेह है कि आपके संशोधन ने प्रतिबद्धता को नहीं बदला है। जब आप संशोधन करते हैं और फिर फिर से दबाते हैं तो प्रतिबद्ध संदेश को अपडेट/बदलकर देखें। – Brad

+0

आपकी मदद के लिए धन्यवाद ब्रैड, पता चला कि मैं गलत तरीके से गिट का उपयोग कर रहा हूं। – edwardmlyte

2

यदि आप समीक्षाओं का एक सेट अपडेट करने का प्रयास कर रहे हैं, तो प्रत्येक अपनी स्वयं की परिवर्तन-आईडी के साथ जिसे आप बनाए रखना चाहते हैं (कहें, एक रिबेस के बाद जहां आप दो कामों का ऑर्डर बदलते हैं), तो आप कुछ अस्वीकार कर सकते हैं ढेर में काम अपरिवर्तित बनी हुई है। आपको काम करने के लिए, या कुछ समान रूप से पुन: प्रस्तुत करके एक नया हैश उत्पन्न करना चाहिए।

+6

मुझे कोई बदलाव नहीं होने के साथ "गिट प्रतिबद्ध - कमांड" करना पड़ा, और यह मेरी समस्या को ठीक करने लग रहा था। – Stuart

0

मुझे एक ही समस्या थी। उसी समय एक और प्रतिबद्धता मास्टर के लिए विलय नहीं हुई थी और जीरिट समीक्षा में थी और गेरिट में छूट दी गई थी। यानी कोड समीक्षा के लिए धक्का दिया। जीरिट में छूट और खत्म करने के लिए लंबित समीक्षा। कोड की समीक्षा होने के बाद मैं बिना किसी त्रुटि के धक्का दे सकता था।

0

मेरे पास एक ही त्रुटि संदेश था, लेकिन परिवर्तन जो मैं धक्का देने की कोशिश कर रहा था, मूल परिवर्तन सेट से अलग-अलग कामों के शीर्ष पर था (git cherry-pick के साथ कुछ जादू चालें थीं और ऐसा लगता है कि गेरिट इसे पसंद नहीं आया)। मैंने अपना मूल परिवर्तन छोड़ दिया, फिर मुझे एहसास हुआ कि मुझे इस मुद्दे को ठीक कर सकता है, लेकिन git review के साथ गेरिट भेजने में विफल रहा।

इस बिंदु पर, मेरा त्वरित समाधान गेरिट वेबसाइट से मूल परिवर्तन को त्यागना था, और के साथ प्रतिबद्ध संदेश से change-Id: sha1 अंतिम पंक्ति को हटाकर एक नया परिवर्तन बनाना था।

0

इस त्रुटि संदेश के साथ गेरिट एक बदलाव के लिए एक नए पैच सेट के रूप में एक प्रतिबद्धता को धक्का देने से इंकार कर देता है, यदि धक्का प्रतिबद्ध इस परिवर्तन के वर्तमान पैच सेट के समान है।

किसी पुश करने की, वर्तमान पैच स्थापित कर दें तो

  • में फ़ाइलों को प्रतिबद्ध करने के लिए समान माना जाता है
  • प्रतिबद्ध संदेश,
  • प्रतिबद्ध के लेखक और
  • प्रतिबद्धता के माता-पिता

सभी समान हैं।

1

इस मुद्दे यहाँ पर आधिकारिक दस्तावेज का संदर्भ लें:

https://gerrit-review.googlesource.com/Documentation/error-no-new-changes.html

मैं एक ही मुद्दा था, मेरी समस्या यह है कि मैं परिवर्तन धक्का दे दिया, तो उस मर्ज का त्याग कर दिया, तो मैं कुछ बदलाव बनाया गया था , गलत तरीके से ने मेरी प्रतिबद्धता में संशोधन किया और फिर से धक्का दिया। यही वह जगह है जहां मुझे त्रुटि मिली।

मेरे ठीक:

  1. तुम सिर्फ जल्दी से इस समस्या के समाधान प्राप्त करना चाहते हैं, git commit --amend, मौजूदा change-Id निकालूँ, यह मानते हुए आप Git हुक की स्थापना की है, तो आप के लिए प्रतिबद्ध समाप्त कर सकते हैं और एक नया change-Id आपको सौंपा जाना चाहिए।
  2. गेरिट में जाएं और अपने मौजूदा change-Id के लिए खोजें, पता लगाएं कि क्या हो रहा है, और तदनुसार ठीक करें। (अनुशंसित)
संबंधित मुद्दे