गिट का उपयोग करके एक विशिष्ट फ़ाइल में परिवर्तन देखें


472

मुझे पता है कि मैं git diffपरिवर्तनों को जांचने के लिए कमांड का उपयोग कर सकता हूं , लेकिन, जहां तक ​​मुझे समझ में आया है, यह निर्देशिका आधारित है। इसका मतलब है कि यह वर्तमान निर्देशिका पर सभी फ़ाइलों के सभी परिवर्तन देता है।

मैं केवल एक विशिष्ट फ़ाइल में परिवर्तनों की जांच कैसे कर सकता हूं? कहो, मैं बदल गया है फ़ाइलें file_1.rb, file_2.rb, ..., file_N.rb, लेकिन मैं केवल फ़ाइल में परिवर्तन में दिलचस्पी है file_2.rb। मैं इन परिवर्तनों की जाँच कैसे करूँ (इससे पहले कि मैं कमिट करूँ)?



4
मेरा मुख्य प्रश्न यह है कि सभी परिवर्तनों को करने से पहले किसी विशिष्ट फ़ाइल के अंतर की जांच कैसे की जाए। Git log मेरे द्वारा किए गए प्रतिबद्ध परिवर्तनों के लिए है।
मेलन

1
मेरे अनुभव में GitKraken
जियोवानी

जवाबों:


642

जैसे कमांड का उपयोग करें:

git diff file_2.rb

जिन चीज़ों के लिए आप मतभेद पा सकते हैं, उन पर पूरी जानकारी के लिए git diffदस्तावेज़ देखें ।

आम तौर पर, git diffअपने आप में संपूर्ण रिपॉजिटरी (न केवल वर्तमान निर्देशिका) में सभी परिवर्तन दिखाता है ।


100
यदि आप एक फ़ाइल में परिवर्तन देखना चाहते हैं, जो आपने पहले ही "git add" 'ed, यह "git diff --cached" है
Ana Betts

8
अगर आप किसी पुराने कमिट के खिलाफ फाइल चेक करना चाहते हैं: $ git diff [प्रतिबद्ध हैश] file_2.rb
एलेक्स

2
कैसे अलग दृश्य से बाहर निकलने के लिए?
गैरी

1
या SourceTree का उपयोग करें।
जीनकोड

4
@GurpreetsinghDhanju Q

110

एक अन्य विधि ( इस एसओ उत्तर में उल्लिखित ) इतिहास को टर्मिनल में रखेगा और आपको फ़ाइल का एक बहुत ही गहरा रिकॉर्ड देगा:

git log --follow -p -- file

यह फ़ाइल का पूरा इतिहास (नाम बदलने से परे इतिहास और प्रत्येक परिवर्तन के लिए अलग-अलग सहित) दिखाएगा।

दूसरे शब्दों में, यदि बार नाम की फाइल को फू नाम दिया गया था, तो git log -p बार (- thefollow ऑप्शन के बिना) केवल फ़ाइल के इतिहास को उस बिंदु तक दिखाएगा, जहाँ उसका नाम बदल दिया गया था - यह नहीं दिखाएगा फ़ाइल का इतिहास जब इसे फू के रूप में जाना जाता था। Git log --follow -p बार का उपयोग फ़ाइल के पूरे इतिहास को दिखाएगा, जिसमें फ़ाइल के किसी भी परिवर्तन को शामिल किया गया था जब इसे फू के रूप में जाना जाता था।


3
जोड़े गए / हटाए गए लाइनों का अवलोकन करने के लिए अच्छी तरह से --stat के साथ काम करता है।
टॉम हेल

2
हां, इस उत्तर को कम से कम उच्च रैंक देना चाहिए, इतिहास को ट्रैक करता है, न कि केवल वर्तमान अंतर को, और न ही आपको सभी प्रतिबद्ध हैश का ट्रैक रखना होगा। परिवर्तनों में बहुत सरल उपयोग अभी तक बहुत शक्तिशाली है
Ilhicas

87

आप gitk [filename]परिवर्तन लॉग देखने के लिए उपयोग कर सकते हैं


2
यह फ़ाइल पर आने वाले कमिट का इतिहास दिखाएगा, जो कभी-कभी हो सकता है कि आपको क्या चाहिए।
r1k0

26

आप नीचे दिए गए कमांड का उपयोग करके देख सकते हैं कि किसी फाइल में क्या बदला है।

git blame <filename>


4
यह सबसे अच्छा जवाब है क्योंकि यह आपको बताता है कि किसने क्या बदलाव किया, और कब कौन सा बदलाव किस हिस्से का था। एक विशिष्ट परिवर्तन के लिए फ़िल्टर करने के लिए, बस वही करें git blame <filename> | grep <searchfor>जहाँ <searchfor>एक छोटा मूल्य है। उदाहरण के लिए, यह पता लगाने के लिए कि कौन किस में बदल fooगया , आप उपयोग करेंगेbardist/index.phpgit blame dist/index.php | grep bar
क्रैंग प्राइम

15

आप निष्पादित कर सकते हैं

git status -s

यह संशोधित फ़ाइल नाम दिखाएगा और फिर इच्छुक फ़ाइल पथ की प्रतिलिपि बनाकर आप परिवर्तनों का उपयोग करके देख सकते हैं git diff

git diff <filepath + filename>

8

सूची के लिए केवल विशिष्ट फ़ाइल परिवर्तनों के विवरणों को सूचीबद्ध करता है,

git log --follow file_1.rb

समान फ़ाइल के लिए विभिन्न कमिट्स में अंतर को सूचीबद्ध करने के लिए,

git log -p file_1.rb

केवल प्रतिबद्ध और उसके संदेश को सूचीबद्ध करने के लिए,

git log --follow --oneline file_1.rb

5

आप भी आजमा सकते हैं

git show <filename>

कमिट के लिए, git शो लॉग संदेश और शाब्दिक अंतर (आपकी फ़ाइल और फ़ाइल के कमिट किए गए संस्करण के बीच) दिखाएगा।

आप अधिक जानकारी के लिए git show Documentation की जाँच कर सकते हैं ।


0

या यदि आप अपने स्वयं के gui उपकरण का उपयोग करना पसंद करते हैं:

git difftool ./filepath

आप इस पोस्ट के द्वारा निर्देशित अपने gui टूल को सेट कर सकते हैं: मैं दृश्य भिन्न कार्यक्रम के साथ 'git diff' आउटपुट कैसे देख सकता हूं?


0

@Greg Hewgill से पूरी तरह सहमत हैं

और यदि आप पथ में स्थान शामिल करते हैं, तो आप उपयोग कर सकते हैं, एपोस्ट्रोफ 'या `के साथ जोड़ने का प्रयास करें

git diff 'MyProject / My Folder / My Sub Folder / file_2.rb'

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.