2014-10-20 6 views
32

एंड्रॉइड के गेरिट पूर्व में: link, पैच डाउनलोड करने के लिए, मुझे 4 विकल्प दिखाई देते हैं।गेरिट - गिट (पुल बनाम चेकआउट बनाम चेरीपिक) जो कि किस लिए है?

  1. रेपो डाउनलोड
  2. चेकआउट
  3. पुल
  4. चेरी लेने

उन दोनों के बीच क्या अंतर है?

यहां मैं उनके बारे में क्या सोचता हूं। प्रतिबद्ध इस तक (परियोजना में सभी Git रेपोस का)> डाउनलोड पूर्ण स्रोत कोड

  • चेकआउट - - कृपया यह स्पष्ट

    1. रेपो डाउनलोड> सुनिश्चित नहीं हैं कि यह क्या है।
    2. खींचें -> सुनिश्चित नहीं है कि यह क्या करता है?
    3. चेरी-पिक -> यह केवल इस परिवर्तन को डाउनलोड करने और इसे स्रोत कोड में विलय करने का प्रयास करता है।

    मुझे पता है कि पुल और चेकआउट चेरी-पिक से अलग हैं। लेकिन वे अलग कैसे हैं?

  • +2

    नोट करने के लिए answerers भावी:

    यहाँ एक चित्रमय प्रतिनिधित्व है इस सवाल का, Git Gerrit के बारे में है नहीं। यदि आप गिट में इन शर्तों का अर्थ बताते हुए एक उत्तर पोस्ट करते हैं, तो आप इस सवाल का जवाब नहीं दे रहे हैं। –

    उत्तर

    23

    आप पहले के बारे में सही हैं।

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

    2. पुल: को हासिल करेगा परिवर्तन और एक ही नाम की स्थानीय शाखा में उन्हें विलीन हो जाती है।

    3. चेरी-लेने: को हासिल करेगा प्रतिबद्ध और वर्तमान स्थानीय शाखा के शीर्ष पर खेलता है, इस प्रकार बनाने पूरी तरह से नया जो एक के रूप में ही परिवर्तन करने के लिए होता इसे लाए जाने के लिए प्रतिबद्ध ।

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

    +1

    1. चेकआउट सिर्फ पैच सेट _fetch_ नहीं करता है, यह पैच सेट की सटीक प्रतिबद्धता को भी बाहर करता है। 2. पैच सेट की प्रतिबद्धता वर्तमान सिर में विलय हो गई है। शाखाओं के नामों के साथ कुछ लेना देना नहीं है। –

    4

    गिट के साथ आपके पास भंडार का अपना संस्करण है। कि आप दूसरों के भंडारों के साथ सिंक्रनाइज़ करते हैं। fetch के साथ आप अपने रिमोट संदर्भों को अपडेट करते हैं, यानी।दूसरों को क्या ताज़ा करें। checkout के साथ आप एक विशिष्ट संशोधन पर स्विच करते हैं। आप इसे करना चाहते हैं, अगर आपने अभी इसका उपयोग करना शुरू कर दिया है।

    अब यदि आप पहले से ही रिमोट शाखा का पालन कर रहे हैं, तो आपको केवल अपनी स्थानीय शाखा को अपडेट करने की आवश्यकता हो सकती है। pull आपके लिए क्या करता है। यह रिमोट शाखा में आपके सभी स्थानीय परिवर्तनों पर लागू होता है। यदि आप इसका उपयोग कर रहे हैं तो आपको इसकी आवश्यकता है, आप बस अपडेट करना चाहते हैं।

    cherry-pick आपको रिपोजिटरी में कहीं से भी एक बदलाव लेने दें और इसे अपनी स्थानीय शाखा पर लागू कर देगा। यदि आप किसी भी कारण से किसी भिन्न शाखा पर हैं तो यह आसान है लेकिन अभी भी उस विशिष्ट परिवर्तन की आवश्यकता है। ध्यान रखें कि यदि आप उस बदलाव को दबाए बिना चेरी-पिक करते हैं कि यह परिवर्तन लगातार नहीं है। यह आपके स्थानीय भंडार के लिए प्रतिबद्ध है लेकिन रिमोट के लिए नहीं है (हालांकि यह हो सकता है कि आपको मामलों में क्या चाहिए)।

    उदाहरण here

    1

    चेकआउट के लिए Git बुनियादी बातों के बारे में अधिक देखें: जब आप एक शाखा में एक विशेष बदलें के आधार पर कर रहे हैं आप इसका इस्तेमाल करना चाहते हैं। कहें कि आपके सहयोगी ने आपके लिए कुछ एपीआई में उपभोग करने के लिए जांच की है, और आप चेकआउट कर सकते हैं कि एक नई स्थानीय शाखा में परिवर्तन करें और अपने परिवर्तन पर काम करना शुरू करें।

    चेरीपिक: आप अपनी स्थानीय शाखा या एक विशेष रिलीज शाखा में एक विशेष परिवर्तन लागू करना चाहते हैं, तो आप चेरीपिक करें। कल्पना कीजिए कि आपके 1.1 रिलीज में पैच फिक्स है, और आप अपनी 2.0 शाखा में उस फिक्स/चेंज को लागू करना चाहते हैं, तो आप इसे आसानी से चेरीपिक कर सकते हैं। यह आपकी 2.0 शाखा में फिक्स युक्त एक नया परिवर्तन बनाएगा। http://think-like-a-git.net/sections/rebase-from-the-ground-up/cherry-picking-explained.html

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