मैं हमेशा के बारे में सोचा गया है git reset
और git checkout
इस अर्थ में कि दोनों में एक विशिष्ट प्रतिबद्ध करने के लिए परियोजना को वापस लाने में, एक ही रूप में। हालांकि, मुझे लगता है कि वे बिल्कुल वैसा नहीं हो सकते, जैसा कि बेमानी होगा। दोनों के बीच वास्तविक अंतर क्या है? मैं थोड़ा भ्रमित हूँ, क्योंकि svn को केवल svn co
कमिट करना है।
जोड़ा
वॉन और चार्ल्स ने बीच git reset
और git checkout
वास्तव में अच्छी तरह से अंतर समझाया । मेरी वर्तमान समझ यह है कि git reset
सभी परिवर्तनों को एक विशिष्ट प्रतिबद्धता पर वापस लौटा दिया जाता है, जबकि git checkout
एक शाखा के लिए अधिक या कम तैयारी की जाती है। मुझे इस समझ में आने में निम्नलिखित दो चित्र काफी उपयोगी लगे:
जोड़ा गया 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
-- files
वेरिएंट के संबंध में ठीक हो सकता है ; मुझे यकीन नहीं है।) यह आरेख बनाता है यह मुख्य अंतर की तरह दिखता है कि क्या वे सूचकांक या डब्ल्यूडी को प्रभावित करते हैं। उससे संबंधित मेरा उत्तर देखें। दूसरा और तीसरा आरेख वास्तविक अंतर को देखने के लिए बहुत सहायक हैं। 4 वें और 5 वें आरेख यह जांचने के लिए उपयोगी हैं कि क्या आप समझते हैं कि ये कमांड क्या करते हैं, लेकिन वास्तव में आपको वहां पहुंचने में मदद नहीं करेंगे।
think-like-a-git.net
डेटा के नुकसान को रोकने के लिए अतिरिक्त चरण (लिंक किए गए लेख में प्रदान किए गए ) की आवश्यकता होती है।