2015-04-12 9 views
8

मैं कुछ गिट ऑपरेशंस को स्क्रिप्ट करने की कोशिश कर रहा हूं जिसमें कुछ रिबेजिंग/चेरी-पिकिंग/आदि शामिल हैं।प्लंबिंग कमांड के साथ गिट संघर्ष को हल करें

git rebase --continue 
git cherry-pick --continue 
git merge --continue 

मैं संपादक कभी क्रियान्वित किया जा रहा है जब Git संदेश प्रतिबद्ध चाहता है से बचने के लिए कोशिश कर रहा हूँ:

वहाँ इस तरह के रूप आदेशों को चलाने के बिना किसी विवाद को हल करने का कोई तरीका है।

शायद गिट को बताने का एक तरीका है कि चीजों को हल किया गया है और यदि आवश्यक हो तो डिफ़ॉल्ट प्रतिबद्ध संदेश में पास किया जाए?

+0

'गिट प्रतिबद्ध' से कुछ नाम देने के लिए प्रतिबद्ध संदेश (non -teractively ('-m',' -C', '-F') प्रदान करने के कई तरीके हैं। उनमें से कोई भी संघर्ष समाधान के लिए विशिष्ट नहीं हैं। – chepner

+0

क्या गिट को बताने का कोई तरीका है कि सभी संघर्षों का उपयोग किए बिना हल किए जाते हैं * - जारी रखें? –

+0

मुझे यकीन नहीं है कि मैं समझता हूं। परिभाषा के अनुसार, एक संघर्ष ऐसा कुछ है जिसके लिए मैन्युअल हस्तक्षेप की आवश्यकता होती है, और 'गिट' के पास यह जानने का कोई तरीका नहीं है कि मैन्युअल हस्तक्षेप खत्म हो गया है * कुछ * जैसे * गिट जो भी --continue' चल रहा है। – chepner

उत्तर

5

आप git commit -m '$msg' उपयोग कर सकते हैं परिवर्तन के लिए प्रतिबद्ध है, तो एक कमांड कहा, "अगले चरणों के साथ आगे बढ़ते रहने के" जारी हो सकता है:

git commit -m '$msg' 
git rebase --skip 

Fo आर git cherry_pick:

git commit -m '$msg' 
# if you are cherry-picking several commits at once, 
# this will skip the current (conflicting) one, and proceed with the remaining ones : 
git reset 
git cherry-pick --continue 

git merge के लिए:
कोई git merge --continue निर्देश नहीं है। संघर्ष के मामले में आप केवल संघर्ष को ठीक करते हैं, फिर commit। तो git commit -m '$msg' ऐसा करेगा।

+0

हां, गिट रिबेस --स्किप _after_ संघर्षों को ठीक करने के लिए प्रतिबद्धता बनाना काम करने लगता है! साथ ही चेरी-पिक के बाद प्रतिबद्धता भी कर रही है। तो, पता चला कि मुझे वास्तव में एक नलसाजी कमांड की आवश्यकता नहीं थी ... मुझे गिट खत्म करने के बजाय मैन्युअल रूप से प्रतिबद्धता बनाने की आवश्यकता थी। –

3

-x विकल्प का उपयोग करने का प्रयास करें। यही विकल्प है:

-x जब रिकॉर्डिंग के लिए प्रतिबद्ध है, एक लाइन "(चेरी प्रतिबद्ध से उठाया ...)" आदेश में कहा गया है कि मूल प्रतिबद्ध संदेश को करने से संकेत मिलता है जो प्रतिबद्ध इस परिवर्तन था संलग्न चेरी से उठाया। यह केवल बिना किसी संघर्ष के चेरी चुनने के लिए किया गया है। यदि आप अपनी निजी शाखा से चेरी-पिकिंग कर रहे हैं तो विकल्प का उपयोग न करें क्योंकि जानकारी प्राप्तकर्ता के लिए बेकार है। यदि दूसरी तरफ आप दो सार्वजनिक रूप से दिखाई देने वाली शाखाओं के बीच चेरी-पिकिंग कर रहे हैं (उदा। से एक विकास शाखा से पुरानी रिलीज के लिए रखरखाव शाखा में एक फिक्स का समर्थन करना), यह जानकारी उपयोगी हो सकती है।

git rebase के लिए:

git-scm.herokuapp.com/docs/git-cherry-pick

इसके अलावा --allow-empty उपयोगी

+0

इसके लिए धन्यवाद, लेकिन मैं एक और सामान्य समाधान की तलाश में हूं संघर्ष होते हैं। यह रीबेस, चेरी-पिक, मर्ज, स्टैशपॉप के लिए लागू होता है, और मुझे यकीन है कि अन्य –

+0

क्या आप कृपया कुछ विवरण प्रदान कर सकते हैं कि आप किस व्यवहार को कार्यान्वित करना चाहते हैं? उदाहरण के लिए: यदि चेरी-पिक पर कुछ मर्ज टकराव हैं तो आप इसे हल करने के लिए कैसे सोचते हैं: बस कंसोल करने के लिए कुछ भी नहीं कहें और चलते रहें (जिस तरह से संभवतः मौजूद नहीं हो सकता है) या शायद आप अपने सभी परिवर्तनों को वापस लौटना चाहते हैं (http://stackoverflow.com/questions/2073841/how-can-i-discard-remote-changes-and-mark-a-file-as-resolved) और इसी तरह। –

+0

जब संघर्ष उत्पन्न होता है, तो उपयोगकर्ता संघर्ष को ठीक करता है और फिर "पूरा बटन" दबाता है। कोई अतिरिक्त इनपुट नहीं (उदाहरण के लिए, एक प्रतिबद्ध संदेश दर्ज करना)। –

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