2011-01-19 18 views
31

अगर मैं अपने रेपो पर 'Git स्थिति' चलाने यह देता है:गिट: अंतर भिन्नता क्यों नहीं दिखाता है?

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: myfile 

हालांकि, अगर मैं एक 'Git diff myFile' यह कोई मतभेद से पता चलता है। क्या ऐसा इसलिए है क्योंकि मैंने बदलाव किया है और इसे हटा दिया है, तो यह मूल पर वापस आ गया है?

क्या मुझे इसे साफ़ करने के लिए 'गिट चेकआउट माईफाइल' चलाया जाना चाहिए?

उत्तर

49

आपकी फ़ाइल पहले से ही प्रतिबद्ध होने के लिए तैयार है। आप गिट के --cached विकल्प का उपयोग करके इसका अंतर दिखा सकते हैं।

git diff --cached myfile 

यह unstage के लिए, बस क्या Git स्थिति चलता है कि यह उत्पादन है में क्या;)

आप अधिक जानकारी के लिए The Git Index देख सकते हैं।

+1

यह मेरे लिए काम करता था, लेकिन केवल बाद में मैं "गिट एड" चलाता था। धन्यवाद। –

5

मुझे --staged उपनाम के लिए प्राथमिकता है, क्योंकि ज्यादातर मुझे लगता है कि --staged वास्तव में इसका मतलब है कि मैं क्या करना चाहता हूं, यानी मुझे चरणबद्ध मतभेद दिखाएं।

git diff --staged 

स्वीकृत उत्तर सही है और मेरे पास इसके साथ कोई योग्यता नहीं है। बस व्यक्तिगत रूप से सोचें कि --cached ऐसा लगता है कि गिट डिफ उत्तर को कैश कर रहा है और मुझे पूर्व-गणना वाले परिणाम या कुछ दिखा रहा है।

मुझे git diff HEAD भी पसंद है क्योंकि यह अधिक सामान्य है। यह दो अवधारणाओं है कि ज्यादातर लोगों को पता है कि एक साथ रखता है, वह यह है कि:

  1. git diff <commit> आप अपनी मौजूदा स्थिति और पिछले प्रतिबद्ध के बीच अंतर देख सकते हैं।

  2. HEAD (या head क्योंकि होल्डिंग शिफ्ट परेशान है) आपकी शाखा की नोक का संदर्भ है।

संयुक्त, (आप में से जो लोग गिनती कीस्ट्रोक्स हैं, @HEAD के लिए एक उपनाम है।) इन दो आम तौर पर उपयोगी अवधारणाओं में परिणाम:

git diff head 
git diff @ 
0

का उपयोग क्षेत्र बनाम भंडार तुलना मंचन के लिए
$git diff --staged 

बनाम भंडार तुलना काम करने के लिए उपयोग करें

$ git diff 

लेकिन यदि कोई फ़ाइल बदल दी गई है और स्टेजिंग क्षेत्र में जोड़ा गया है ($ git add fileName) और हम ($ git diff) के साथ अंतर देखने का प्रयास करते हैं। यह कोई फर्क नहीं पड़ता क्योंकि फाइल स्टेजिंग क्षेत्र में है और इसकी तुलना रिपोजिटरी से नहीं की जाएगी।

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