/ / क्यों 'गिट diff` रिपोर्ट' गिट एड 'के बाद कोई फ़ाइल परिवर्तन नहीं - गिट, गिट-diff, गिट-एड

क्यों 'गिट diff` रिपोर्ट' गिट एड 'के बाद कोई फ़ाइल परिवर्तन नहीं - गिट, गिट-diff, गिट-एड

ऐसा क्यों है git diff सोचता है कि कोई बदलाव नहीं है

..भले ही git status उन्हें रिपोर्ट करता है संशोधित?

$ git status
On branch master
Your branch is ahead of "origin/master" by 2 commits.
(use "git push" to publish your local commits)

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file:   file-added
modified:   file-with-changes   << it knows there are changes

लेकिन अंतर देखने के लिए, मुझे स्पष्ट रूप से अंतिम रिवर्सन हैश जोड़ना होगा ..

$ git diff
(nothing)

$ git diff rev-hash
diff --git a/file-with-changes b/file-with-changes
index d251979..a5fff1c 100644
--- a/file-with-changes
+++ b/file-with-changes
.
..

उत्तर:

जवाब के लिए 22 № 1

प्रयास करें git diff --staged आदेश।

अधिक विकल्प आप उपयोग कर सकते हैं।

git diff

इंडेक्स / स्टेजिंग और काम करने वाली फाइलों के बीच परिवर्तन दिखाता है। आपके मामले में, git add रखना file-with-changes क्षेत्र स्टेज करने के लिए। इसलिए, स्टेजिंग और काम करने वाली फाइलों के बीच कोई फर्क नहीं पड़ता।

git diff --staged

HEAD और अनुक्रमणिका / स्टेजिंग के बीच परिवर्तन दिखाता है। git diff --cached वही काम करता है। staged तथा cached एक दूसरे के लिए इस्तेमाल किया जा सकता है।

git diff HEAD

HEAD और काम करने वाली फ़ाइलों के बीच परिवर्तन दिखाता है

git diff $commit $commit

2 प्रतिबद्धताओं के बीच परिवर्तन दिखाता है

git diff origin

सिर और रिमोट / मूल के बीच diff दिखाता है


जवाब के लिए 5 № 2

git diff सूचकांक के खिलाफ diffs, आपके खिलाफ नहीं HEAD संशोधन। चलाकर git add, आपने अपने सूचकांक में बदलाव किए हैं, इसलिए निश्चित रूप से कोई अंतर नहीं है! उपयोग करें

  • git diff HEAD अपने पेड़ राज्य और के बीच अंतर देखने के लिए HEAD संशोधन, या
  • git diff --cached अपनी अनुक्रमणिका और के बीच अंतर देखने के लिए HEAD संशोधन।

उत्तर № 3 के लिए 1

एक ही समस्या में भागो।

  • Git add filename1.c का उपयोग करके बनाई गई नई फ़ाइल जोड़ें
  • कुछ अन्य filename2.c में एक और परिवर्तन करें जो पहले से ही भंडार ट्रैकिंग सिस्टम का हिस्सा था।
  • एक गिट diff करें और आप केवल filename2.c में परिवर्तन देखेंगे। Filename1.c में परिवर्तन दिखाई नहीं देंगे।
  • हालांकि यदि आप गिट स्थिति करते हैं तो आप filename1.c और filename2.c दोनों में परिवर्तन देखेंगे।
  • एक गिट प्रतिबद्ध करें-ए-एम "filename1.c में परिवर्तन और filename2.c blah blah"
  • एक गिट पुश करो

आप देखेंगे कि filename1.c प्रतिबद्ध है।


जवाब के लिए 0 № 4

इसलिये git diff डिफ़ॉल्ट रूप से स्टेजिंग क्षेत्र और आपकी कार्यशील प्रति के बीच मतभेदों की जांच करता है। जब आप git add, आपका स्टेजिंग क्षेत्र आपकी कार्यशील प्रतिलिपि से मेल खाता है और इसलिए अलग-अलग रिपोर्टों में कोई परिवर्तन नहीं होता है।

जोड़ना --cached झंडा के खिलाफ अंतर करने के लिए diff बताता है HEAD.