2011-10-25 16 views
11

मैं गेरिट का उपयोग कर रहा हूं। मैं निम्न आदेशगेरिट पुनर्निर्माण परिवर्तन-ids

$ cd .git/hooks 
$ scp -P 29418 [email protected]:hooks/commit-msg . 
$ cd ../.. 

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

कोई सुझाव कृपया बताता है?

उत्तर मिला, लेकिन stackoverflow मुझे अपने प्रश्न का उत्तर देने नहीं देगा।

तो यह मेरे हिस्से पर एक पूरी त्रुटि थी। जब मैं प्रतिबद्ध करने के लिए Git --amend प्रतिबद्ध कोशिश कर रहा था -m

मैं प्रतिबद्ध संदेश इनलाइन करने गया था और है कि परिवर्तन-ईद दूर पोंछते किया गया था "कमिट प्रारंभिक", इस प्रकार मुझे एक नया दे रही है।

+0

आप यह सुनिश्चित करें कि ChangeId प्रतिबद्ध संदेश के अंतिम पैरा में है रहे हैं? एक नज़र डालें: [ChangeId] (http: //gerrit.chromium।संगठन/gerrit/दस्तावेज़ीकरण/उपयोगकर्ता-changeid.html) – vquintans

+0

एमएमएमएम, मैंने अभी अपना प्रश्न पढ़ना समाप्त कर दिया है :-) और हाँ, -एम एक सामान्य त्रुटि है। – vquintans

उत्तर

21

प्रतिबद्ध-msg हुक काम कि जिस तरह से:

  1. चेक अगर आप अपने लिए प्रतिबद्ध संदेश में परिवर्तन-आईडी है।
  2. यदि नहीं, तो एक उत्पन्न करता है।

यदि आप git commit --amend टाइप करते हैं और प्रतिबद्ध संदेश संपादित करते हैं, तो आपके पास अभी भी पुरानी परिवर्तन-आईडी (यह अच्छी है) है।

लेकिन यदि आप git commit --amend -m "...." टाइप करते हैं तो आपने परिवर्तन-आईडी हटा दी है, इसलिए जीरिट नया उत्पन्न करता है।

अंगूठे का नियम: गेरिट के साथ --amend -m का उपयोग न करें।

+0

यदि आप वास्तव में चाहते थे, तो कोई एक तैयारी-प्रतिबद्ध-संदेश हुक लिख सकता है जो बदले में गिलहरी करेगा और फिर इसे वापस रखेगा। – forivall

+2

यिक्स! यह बहुत देर हो चुकी है :) – mlvljr

+0

- आकार और -एम काम करते हैं ... आपको चीजों को साफ करने के लिए धक्का देने से पहले 'गिट रिबेस --इंटरएक्टिव' को याद रखना होगा। और निश्चित रूप से, आपको यह सुनिश्चित करना होगा कि ऐसा करने पर परिवर्तन आईडी को न बदलें ;-) – GhostCat

1

यदि git commit --amend या git commit --amend -m "...." मदद नहीं करता है और अभी भी गायब परिवर्तन-आईडी के बारे में शिकायत करता है।

(यह ज्यादातर नेटवर्क त्रुटियों के कारण होता है) यह कैसे मैं गया यह हल (यकीन है कि मेड मैं प्रतिबद्ध-msg हुक आवेदन किया था, जाँच-आउट निर्देशिका reference की पेरेंट निर्देशिका पर) है:

  1. git stash का उपयोग करके परिवर्तनों को छूएं।
  2. प्रयुक्त gitk & हार्ड ड्राइव को केवल पिछले प्रतिबद्धता में बदलने के लिए। enter image description here
  3. फिर रेपो git pull --rebase से खींचें और रीबेस करें।
  4. फिर git stash apply, reference का उपयोग करके किए गए हुए परिवर्तनों को लागू करें। git mergetool का उपयोग कर विलय संघर्षों को हल करें।
  5. परिवर्तन फिर से git commit या git commit --amend का उपयोग करने में recommitted, यह एक नए परिवर्तन-ईद
  6. पुश git push ... आदेश का उपयोग भंडार पर शाखा में परिवर्तन उत्पन्न।

वहाँ समान प्रश्न के आसपास के रूप में अच्छी for reference

संबंधित मुद्दे