अपने प्रयोगों में मैंक्या Git के बीच का अंतर --hard रीसेट और Git --merge
git reset --hard
और
git reset --merge
उपयोग के बीच किसी भी कार्यात्मक अंतर ढूँढने में सक्षम नहीं किया गया है रीसेट या तो
--hard reset HEAD, index and working tree
--merge reset HEAD, index and working tree
मैं नियमित रूप से इतना understan --hard
विकल्प का उपयोग निर्देश किसी भी संकेत नहीं देते डी कैसे काम करता है। --merge
और --hard
विकल्पों के बीच क्या अंतर है?
चीयर्स, ऑली
शायद एक उदाहरण यहाँ मदद मिलेगी, के निम्न क्रम का उपयोग करते हैं: अगर मैं
git reset --merge 123abc
कोशिश मैं
error: Entry 'file_one' not uptodate. Cannot merge.
fatal: Could not reset index file to revision '123abc'
मिल अब
cd git_repo
touch file_one
git add file_one
git commit -m "commit one" # sha1 of 123abc
echo "one" >> ./file_one
git commit -a -m "commit two" # sha1 of 234bcd
echo "two" >> ./file_one
git add . # populate index with a change
echo "three" >> ./file_one # populate working area with a change
कारण यह है कि file_one जा रहा है मैं
git add .
git reset --merge 123abc
इस बार यह काम करता है, फिर भी, मैं git reset --hard
रूप में एक ही परिणाम प्राप्त करने के दोनों कार्य क्षेत्र और सूचकांक
इसे ठीक करने के में परिवर्तन किया है। सूचकांक खाली है, कार्यक्षेत्र खाली है, file_one खाली है, क्योंकि यह पहली प्रतिबद्धता के बाद था।
कोई व्यक्ति इस अंतर को दर्शाने वाले चरणों के साथ आ सकता है?
मैंने उन दस्तावेज़ों को पढ़ा है, लेकिन कहना है कि मैं उनमें से अधिक समझ नहीं पा रहा हूं। "सूचकांक पेड़ नामित द्वारा दर्ज मिलान करने के लिए प्रतिबद्ध रीसेट करता है" मेरे समझ है कि सूचकांक रीसेट --merge ऑपरेशन के बाद खाली हो गया है है, इस टिप्पणी कुछ और इंगित करता है। "और नामित प्रतिबद्धता और काम करने वाले पेड़ में वर्तमान प्रतिबद्धता के बीच अलग-अलग फ़ाइलों को अपडेट करता है" इन फ़ाइलों में किए गए अपडेट कहां हैं, वे इंडेक्स में नहीं दिखते हैं, क्या वे स्वचालित रूप से प्रतिबद्ध होते हैं? – opsb
'गिट रीसेट के बाद - 'आपके पास इंडेक्स == है, लेकिन यह केवल उन फ़ाइलों को अपडेट करता है जो काम में हैं, वे हैंड (वर्तमान प्रतिबद्धता) और (नामित प्रतिबद्ध) के बीच अलग हैं, आपके स्थानीय परिवर्तनों को संरक्षित करते हैं । –
उदाहरण के ऊपर मैंने पाया है कि जब मैं कार्यक्षेत्र में परिवर्तन करता था तो मैं एक गिट रीसेट नहीं कर सकता था। क्या यह वास्तव में ऊपर दिखाए गए लोगों से अलग-अलग चरणों का उपयोग कर संभव है? – opsb