दिलचस्प पोस्ट
पाठ से सभी सफ़ेद स्थान निकालें मैं रेडियो बटन के रंग को कैसे बदलूं? कैसे ठीक करें "ConnectionString संपत्ति को प्रारंभ नहीं किया गया है" सी ++: एरे के लिए कन्स्ट्रक्टर आरंभक मैं जावास्क्रिप्ट में एक नियमित अभिव्यक्ति के लिए सभी मैचों को कैसे प्राप्त करूं? दृश्य स्टूडियो सेटअप प्रोजेक्ट में कस्टम प्रीक्रैकसाइट्स जोड़ना क्या कोई गिट में एक प्रतिबद्धता के लिए धक्का की तारीख प्राप्त करने के लिए कोई तरीका है? आपकी पसंद की भाषा के बारे में पांच चीजों से नफरत है? मूल्यों के आधार पर डेटाग्रिड सेल रंग बदलें MySQL पीडीओ कैसे बाँध की तरह मेरे पड़ोसियों की तुलना में मेरी पाठ्यचर्या अधिक क्यों है? उचित यूटीएफ -8 एन्कोडेड वर्णों के लिए "\ u00ed" जैसे यूनिकोड एस्केप अनुक्रम को कैसे डिकोड किया जाए? Nested Array के साथ PHP Foreach? ऑरेजेस पास संदर्भ के साथ Array.prototype.fill () और नए इंस्टेंस नहीं स्विंग घटक कई कंटेनरों में जोड़ा जा सकता है?

"जीआईटी रीसेट" और "जीआईटी चेकआउट" के बीच अंतर क्या है?

मैंने हमेशा git reset और git checkout बारे में सोचा है कि दोनों ही इस परियोजना को विशिष्ट प्रतिबद्ध करने के लिए वापस लाएंगे। हालांकि, मुझे लगता है कि वे ठीक उसी तरह नहीं हो सकते हैं, क्योंकि यह अनावश्यक होगा। दोनों के बीच वास्तविक अंतर क्या है? मैं थोड़ा भ्रमित हूँ, क्योंकि svn केवल svn co प्रतिबद्ध करने के लिए svn co वापस।

जोड़ा

निम्न आरेख अंतर को बताते हैं, यद्यपि संभवतः अतिरंजित या गलत तरीके से तुम क्या सोचते हो? क्या यह गलत है या पीढ़ी सरलीकृत है?

http://a.imageshack.us/img192/5440/screenshot20100903at416.png

जोड़ा 2

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

http://a.imageshack.us/img651/1559/86421927.pnghttp://a.imageshack.us/img801/1986/resetr.png

3 जोड़ा

Http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html से , चेकआउट और रीसेट कर सकते हैं रीबेस

यहां छवि विवरण दर्ज करें

 git checkout bar git reset --hard newbar git branch -d newbar 

यहां छवि विवरण दर्ज करें

वेब के समाधान से एकत्रित समाधान ""जीआईटी रीसेट" और "जीआईटी चेकआउट" के बीच अंतर क्या है?"

  • git reset मुख्य रूप से सूचकांक को अद्यतन करने के बारे में है, जो चलती है HEAD।
  • git checkout काम के पेड़ (सूचकांक या निर्दिष्ट पेड़) को अपडेट करने के बारे में है। यह केवल सिर को अद्यतन करेगा यदि आप किसी शाखा की जांच करते हैं (यदि नहीं, तो आप अलग सिर के साथ समाप्त होते हैं)

तुलना करके, क्योंकि svn के कोई सूचकांक नहीं है, केवल एक काम पेड़, svn checkout एक अलग निर्देशिका पर एक दिया संशोधन की प्रतिलिपि होगा।
git checkout करीब समतुल्य होगा:

  • svn update (यदि आप एक ही शाखा में हैं, जिसका अर्थ है कि एक ही एसवीएन यूआरएल)
  • svn switch (यदि आप उदाहरण के लिए एक ही शाखा की जांच करते हैं, लेकिन किसी अन्य एसवीएन रिपो यूआरएल से)

उन सभी तीन कार्यशील पेड़ संशोधनों ( svn checkout , update , switch ) में केवल एक कमांड है git: git checkout
लेकिन जब से git सूचकांक की धारणा (जो कि रेपो और काम कर पेड़ के बीच "स्टेजिंग क्षेत्र") है, तो आपके पास git reset भी है।


टिक्केई ने टिप्पणियों में लेख " रीमेस्सेट डेमिस्टिफाइड" का उल्लेख किया ।

उदाहरण के लिए, अगर हमारे पास दो शाखाएं हैं, तो ' master ' और ' develop ' विभिन्न प्रतिबद्धताओं की ओर इशारा करते हैं, और हम वर्तमान में ' develop ' पर हैं (इसलिए इसे HEAD को इंगित करते हैं) और हम git reset master चलाते हैं, स्वयं develop हो जाएगा उसी बात को इंगित करें कि ' master ' करता है

दूसरी ओर, अगर हम बजाय git checkout master चलाते हैं, तो ' develop ' आगे नहीं बढ़ेगा, HEAD ही होगा HEAD अब ' master ' को इंगित करेगा

इसलिए, दोनों ही मामलों में हम HEAD को इंगित करने के लिए आगे बढ़ रहे हैं, लेकिन हम ऐसा कैसे करते हैं। reset शाखा HEAD अंक को स्थानांतरित reset देगा, चेकआउट एक अन्य शाखा को इंगित करने के लिए स्वयं को ले जाता है

http://git-scm.com/images/reset/reset-checkout.png

अपने सरल रूप में, reset रीसेट को इंडेक्स को छूने के बिना काम करने वाले पेड़ को बदलता है, जबकि काम के पेड़ को छूने के बिना सूचक को reset करता है।

HEAD से मिलान करने के लिए इंडेक्स को रीसेट करता है, अकेले काम करने वाले पेड़:

 git reset 

संकल्पनात्मक रूप से, यह कामकाजी वृक्ष में सूचकांक की जांच करता है। वास्तव में कुछ भी करने के लिए इसे उपयोग करने के लिए आपको -f किसी भी स्थानीय परिवर्तनों को अधिलेखित करने के लिए मजबूर करना होगा। यह सुनिश्चित करने के लिए यह एक सुरक्षा सुविधा है कि "कोई तर्क" फ़ॉर्म विनाशकारी नहीं है:

 git checkout 

एक बार जब आप पैरामीटर जोड़ना शुरू करते हैं तो यह सच है कि कुछ ओवरलैप है।

checkout आमतौर पर एक शाखा के साथ प्रयोग किया जाता है, टैग या प्रतिबद्ध। इस मामले में यह दिये गये प्रतिबद्ध को HEAD और सूचकांक रीसेट कर देगा और साथ ही काम के पेड़ में सूचकांक के चेकआउट को प्रदर्शित करेगा।

इसके अलावा, अगर आप reset करने के लिए --hard आपूर्ति करते हैं, तो आप काम के पेड़ को ओवरराइट करने के साथ ही सूचकांक को reset करने के लिए reset पूछ सकते हैं।

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

reset और commit अन्य रूपों में पथ की आपूर्ति शामिल है।

यदि आप reset करने के लिए पथ प्रदान करते हैं, तो आप आपूर्ति नहीं कर सकते – --hard और reset केवल आपूर्ति किए गए कमांड (या HEAD में संस्करण के लिए आपूर्ति किए गए पथों का सूचक संस्करण बदल जाएगा यदि आप कोई निर्दिष्ट नहीं करते हैं)।

यदि आप checkout लिए पथ प्रदान करते हैं, जैसे reset यह आपूर्ति किए गए कमेट (या HEAD ) से मिलान करने के लिए आपूर्ति किए गए पथों के सूचक संस्करण को अपडेट करेगा, लेकिन यह हमेशा काम के पेड़ में दिए गए पथों के सूचक संस्करण को चेक करेगा।

परिवर्तन का उपयोग करते समय एक साधारण उपयोग के मामले:
1. यदि आप संशोधित फ़ाइल के मचान को पूर्ववत करना चाहते हैं, तो रीसेट करें का उपयोग करें।
2. यदि आप अस्थिर फ़ाइल / एस में परिवर्तन त्यागना चाहते हैं तो चेकआउट का उपयोग करें

एटलसियन हमें जीआईटी रीसेट , जीआईटी चेकआउट और इतने पर एक उत्कृष्ट स्पष्टीकरण देते हैं, git वापस लौटें इस आलेख में, इन कमांडों के विभिन्न उपयोगों को एक अलग स्तर पर समझाया गया है – फ़ाइल, स्नैपशॉट का निर्माण और प्रतिबद्ध

https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting

दो आदेश (रीसेट और चेकआउट) पूरी तरह से अलग हैं

checkout X reset --hard X नहीं reset --hard X

यदि एक्स एक शाखा का नाम है, तो checkout X वर्तमान शाखा को बदल देगा, जबकि reset --hard X नहीं होगा।