मैंने देखा है कि एक या दो टिकटों पर काम करते समय, अगर मैं दूर जाता हूं, तो मुझे यकीन नहीं है कि मैंने क्या काम किया, क्या बदला, वगैरह।
क्या git add करने से पहले किसी फ़ाइल के लिए किए गए परिवर्तनों को देखने और फिर git कमिट करने का कोई तरीका है?
मैंने देखा है कि एक या दो टिकटों पर काम करते समय, अगर मैं दूर जाता हूं, तो मुझे यकीन नहीं है कि मैंने क्या काम किया, क्या बदला, वगैरह।
क्या git add करने से पहले किसी फ़ाइल के लिए किए गए परिवर्तनों को देखने और फिर git कमिट करने का कोई तरीका है?
जवाबों:
तुम खोज रहे हो git diff
। आपकी सटीक स्थिति के आधार पर, इसका उपयोग करने के तीन उपयोगी तरीके हैं:
# show differences between index and working tree
# that is, changes you haven't staged to commit
git diff [filename]
# show differences between current commit and index
# that is, what you're about to commit
# --staged does exactly the same thing, use what you like
git diff --cached [filename]
# show differences between current commit and working tree
git diff HEAD [filename]
यह निर्देशिकाओं पर पुनरावर्ती रूप से काम करेगा, और यदि कोई रास्ता नहीं दिया जाता है, तो यह सभी परिवर्तन दिखाता है।
git add -p
सभी फ़ाइलों का निरीक्षण करने का एक विकल्प है।
git diff --staged [filename]
अपने मुख्य उत्तर में जोड़ने पर विचार करें क्योंकि यह एक ऐसी स्थिति है जिसकी आवश्यकता अक्सर होती है।
उपयोग करें git-diff
:
git diff yourfile
मेरे git add -p
लिए सबसे उपयोगी तरीका है (और इरादा मुझे गिट डेवलपर्स द्वारा?) सभी अस्थिर परिवर्तनों की समीक्षा करने के लिए (यह प्रत्येक फ़ाइल के लिए भिन्न दिखाता है), उन परिवर्तनों का एक अच्छा सेट चुनें जो एक कमिट के साथ जाना चाहिए, फिर जब आपके पास हो उन सभी का मंचन, फिर उपयोग करें git commit
, और अगले प्रतिबद्ध के लिए दोहराएं। फिर आप प्रत्येक बदलाव को एक उपयोगी या सार्थक सेट बना सकते हैं, भले ही वे विभिन्न फाइलों में हुए हों। मैं प्रत्येक टिकट या इसी तरह की गतिविधि के लिए एक नई शाखा बनाने का सुझाव भी दूंगा, और उनके बीच स्विच करके उपयोग checkout
कर git stash
सकता हूं (शायद उपयोग करने से पहले यदि आप स्विच करना नहीं चाहते हैं), हालांकि यदि आप कई त्वरित बदलाव कर रहे हैं तो यह दर्द हो सकता है। अक्सर मर्ज करना न भूलें।
याद रखें, आप परिवर्तन कर रहे हैं , फाइलें नहीं।
इस कारण से, यह बहुत दुर्लभ है कि मैं git add -p
(या मैजिट समकक्ष) का उपयोग अपने परिवर्तनों को जोड़ने के लिए नहीं करता हूं।
git diff <path>/filename
पथ फ़ाइल तक आपका पूरा सिस्टम पथ हो सकता है या
यदि आप इस परियोजना में हैं तो आप संशोधित फ़ाइल पथ को भी
संशोधित कर सकते हैं पथ के साथ संशोधित फ़ाइलों का उपयोग करें:git status
ठीक है, मेरा मामला जब आप फ़ाइलों की सूची के बारे में परवाह नहीं करना चाहते हैं। बस उन सबको दिखाओ।
जब आप पहले से git add
ही अपनी फ़ाइलों की सूची के साथ भाग गए :
$ git diff --cached $(git diff --cached --name-only)
के अधिक हाल के संस्करणों में git
, आप इसका --staged
भी उपयोग कर सकते हैं , जिसका एक पर्याय है --cached
।
उसी का उपयोग फ़ाइलों को जोड़े बिना --cached
विकल्प के लिए नहीं किया जा सकता है ।
$ git diff $(git diff --name-only)
"कैश्ड" विकल्प के लिए git कमांड उपनाम:
$ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)'
अपने संबंधित git रेपो में जाएं, फिर नीचे कमांड चलाएँ:
गिट भिन्न फ़ाइल नाम
यह फ़ाइल को खोले गए परिवर्तनों के साथ खोलेगा, फाइल को नीचे स्क्रॉल करने के लिए रिटर्न / एंटर कुंजी दबाएगा।
PS फ़ाइलनाम में फ़ाइल का पूरा पथ शामिल होना चाहिए या फिर आप संबंधित फ़ाइल / फ़ाइल के फ़ोल्डर में जाकर पूर्ण फ़ाइल पथ के बिना चला सकते हैं
आप एक गिट-फ्रेंडली टेक्स्ट एडिटर का भी उपयोग कर सकते हैं। वे उन रेखाओं पर रंग दिखाते हैं जिन्हें संशोधित किया गया है, अतिरिक्त लाइनों के लिए एक और रंग, हटाए गए लाइनों के लिए एक और रंग, आदि।
एक अच्छा टेक्स्ट एडिटर जो ऐसा करता है वह है GitHub का Atom 1.0 ।
[filename]
एक वैकल्पिक तर्क को इंगित करते हैं।)*
आप शेल को सभी फाइलों को सूचीबद्ध करने दे रहे हैं, इसलिए यदि आप एक उपनिर्देशिका में हैं तो आपको केवल उस उपनिर्देशिका (संपूर्ण रेपो) में चीजें नहीं मिलेंगी, और आप ' छिपी हुई फ़ाइलों में परिवर्तन याद करेंगे।