2011-08-15 15 views
66

मैं मास्टर से एक प्रतिबद्धता लेने और इसे वर्तमान उत्पादन शाखा में लाने की कोशिश कर रहा हूं। हालांकि, जब मैं git cherry-pick <SHA-hash> निष्पादित, मैं सिर्फ यह संदेश प्राप्त:गिट चेरी-पिक काम नहीं कर रहा

# On branch prod_20110801 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# site/test-result/ 
nothing added to commit but untracked files present (use "git add" to track) 
The previous cherry-pick is now empty, possibly due to conflict resolution. 
If you wish to commit it anyway, use: 

    git commit --allow-empty 

Otherwise, please use 'git reset' 

नोट: मैं एक रीसेट और एक रीसेट --hard HEAD^कर की कोशिश की है, और न तो कुछ भी बदलने लग रहा था।

मैं क्यों यह मेरे लिए काम नहीं कर रहा है के रूप में उलझन में हूँ।

किसी भी अंतर्दृष्टि, सलाह, या कैसे हल करने के लिए इस मददगार होगा ~ पर विचार! अपने वर्तमान शाखा पर प्रतिबद्ध है कि द्वारा शुरू की परिवर्तन हो कुछ लोगों द्वारा पेश किया गया है के सभी -

+0

यह मेरे साथ हुआ जब मैंने गलती से गलत प्रतिबद्धता लेने की कोशिश की। गिटक का उपयोग करते समय कभी-कभी होता है। – cst1992

उत्तर

89

Git नो-सेशन के रूप में चेरी पिकअप को हल किया गया है। (या फिर गिट सोचता है, वैसे भी।) सत्यापित करें कि जो चेरी आप चेरी-पिकिंग कर रहे हैं उसे किसी भी तरह से विलय नहीं किया गया है, या तो एक उचित विलय, रीबेस/चेरी-पिक, या टुकड़े टुकड़े पैच के रूप में। (प्रयोग git show <commit-id> diff को देखने के लिए।)

+14

आपकी सलाह के लिए धन्यवाद, यह पता चला है कि चेरी-पिक पहले से ही हो चुका था और मुझे बस इतना करना है कि इसे जिथब पर धक्का दिया जाए। –

+0

ठीक है, मुझे नहीं पता था कि यह प्रतिबद्ध-आईडी को दी गई फ़ाइलों की सामग्री की जांच कर रहा था। मैं लॉग में प्रतिबद्ध आईडी की तलाश में गया और उसे नहीं मिला। यह पता चला कि यह पहले से ही विलय हो चुका है। – mparaz

7

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

यह पता चला है कि किसी के पास पहले से ही चेरी ने एक सप्ताह पहले प्रतिबद्धता उठाई थी। बदलता है, लेकिन विशिष्ट SHA नहीं, पहले से ही मेरी वर्तमान शाखा में थे, और मैंने उन्हें नहीं देखा था।

चेक फ़ाइल (फ़ाइलें) है कि आप चेरी ले करने के लिए प्रयास कर रहे हैं। यदि उनके पास पहले से ही बदलाव हैं, तो प्रतिबद्धता का एक संस्करण पहले ही चेरी को चुना गया है या किसी अन्य तरीके से जोड़ा गया है। इस प्रकार चेरी को फिर से लेने की कोई ज़रूरत नहीं है।

+0

मुझे पूरा यकीन है कि आपकी शाखा में विशिष्ट प्रतिबद्धता कभी नहीं * जब इसे चेरी पिक द्वारा लाया गया था, क्योंकि चेरी पिक एक नया हैश होगा, है ना? या मैं गलतफहमी हूँ? – msouth

+0

@msouth जो मैंने मूल रूप से अन्य उत्तरों से दूर ले लिया था, "प्रतिबद्धता पहले ही विलय हो चुकी थी", लेकिन मैं देख सकता था कि यह मेरी शाखा में * नहीं * था। चेरी के बारे में आप सही हैं हालांकि हमेशा एक नया एसएचए चुनते हैं। – pkamb

+0

हाँ, मैं सोच रहा था कि "हैश द्वारा पहचाना गया विशिष्ट प्रतिबद्धता", जब मैंने इसे टाइप किया था। मेरी भाषा अपरिचित थी। मैं अक्सर 'गिट लॉग - आलेख --pretty --decorate --oneline' के आउटपुट के माध्यम से देख रहा हूं यह देखने के लिए कि कोई दिया गया SHA मेरी शाखा में है या नहीं।प्रतिबद्धता संदेश के बारे में सोचने के आधार पर आप कैसे मिश्रित हो सकते हैं, इस बारे में नीचे मेरा जवाब देखें - ऐसी स्थिति है जहां यह नहीं है, और यही कारण है कि मुझे मूल रूप से इस सवाल का कारण बन गया। एक मस्तिष्क उन शॉर्टकट्स को बनाता है और वे कभी-कभी आपको काटने के लिए वापस आ सकते हैं। – msouth

1

भी ध्यान रखें कि पेड़ से एक खाली फ़ाइल (जैसे .gitkeep) जोड़ने के लिए एक खाली करने के रूप में चेरी ले द्वारा माना जाता है।

+0

मेरे मामले में मेरे पास मेरी चेरी-पिक कोशिश करने से पहले एक वापसी प्रतिबद्ध (जो एक खाली प्रतिबद्धता को वापस कर रहा था) था, इसलिए मुझे लगता है कि कुछ भी खाली-आश शायद इस संदेश को प्रकट करने का कारण बन जाएगा। – lidkxx

0

तो, यहां अभी तक एक और भ्रामक स्थिति है, जहां इस पैदा कर सकते:

git log screenshot

मैं चेरी के लिए कोशिश कर रहा था जो जाहिरा तौर पर कुछ भी नहीं है 9a7b12e लेने - यह और भी पर मुझे बताने की कोशिश की: मैं निम्नलिखित था गिट लॉग आउटपुट में वह लाइन जो 44 9 7428 थी जो मैं वास्तव में चाहता था। (मैंने जो किया वह केवल प्रतिबद्ध संदेश की तलाश में था और मैंने पहले हैश को पकड़ लिया था, मैंने देखा था)। वैसे भी, बस लोगों को यह बताने की इच्छा है कि एक और तरीका है जिसे आप चेरी करने की कोशिश में धोखा दे सकते हैं।

+0

स्पष्टीकरण के बिना डाउनवोट करने के लिए आपके लिए बहुत उपयोगी नहीं है - यह मेरी समस्या पर सटीक प्रजनन है जिसने मुझे इस खोज को मेरी खोज पर ढूंढने का नेतृत्व किया। यदि आपके पास इसे सुधारने की सिफारिश है, तो कृपया मुझे डाउनवॉटिंग के बजाय टिप्पणियों में बताएं। – msouth