2012-04-06 14 views
237

प्रतिबद्ध इस बार मेरे पास होता है:कैसे देखें Git में फ़ाइल diff से पहले

मैं एक या दो दिन के पाठ्यक्रम पर एक ही समय में एक जोड़े को संबंधित परिवर्तन पर काम कर रहा हूँ, और प्रतिबद्ध करने के लिए जब यह समय आ गया है , मैं एक विशिष्ट फ़ाइल में क्या बदल गया भूल भूल गया। (यह सिर्फ एक व्यक्तिगत गिट रेपो है, इसलिए मैं प्रतिबद्धता में एक से अधिक अपडेट होने के साथ ठीक हूं।)

क्या मेरी स्थानीय फ़ाइल के बीच हुए बदलावों का पूर्वावलोकन करने का कोई तरीका है, जो चेक इन होने वाला है, और उस फाइल के लिए आखिरी प्रतिबद्धता?

कुछ की तरह:

git diff --changed /myfile.txt 

और यह की तरह कुछ प्रिंट आउट होगा:

line 23 
    (last commit): var = 2+2 
    (current):  var = myfunction() + 2 

line 149 
    (last commit): return var 
    (current):  return var/7 

इस तरह, मैं जल्दी से देख सकते हैं मुझे लगता है कि फाइल में क्या किया था क्योंकि यह आखिरी में जाँच की थी।

उत्तर

418

तुम क्या आप एड नहीं git add में अभी तक देखना चाहते हैं:

git diff myfile.txt 

या आप पहले से ही add एड में परिवर्तन

git diff --cached myfile.txt 
+7

ध्यान दें कि डबल डैश केवल एक संशोधन और फ़ाइल नाम के बीच एक संभावित भ्रम की आवश्यकता है (और उस स्थिति में, गिट आपको यह बताएगा)। –

+0

धन्यवाद! git diff myfile.txt यह था। डबल डैश टिप के लिए भी धन्यवाद। –

+3

'git add -p' देखें। प्रत्येक परिवर्तन की समीक्षा करें, चरण में परिवर्तनों को चुनिंदा रूप से स्वीकृति दें, अगर आप अपना दिमाग बदलते हैं, और यहां तक ​​कि एक खंड को इनलाइन भी संपादित करते हैं, तो निरस्त करें। मैं इसके बिना 'गिट एड' कभी नहीं। गिट 1.7.2 –

11

आप -v (या --verbose) git commit के लिए विकल्प का प्रयास किया था देखना चाहते हैं? यह संदेश संपादक में प्रतिबद्धता का अंतर जोड़ता है।

+1

। यह प्रतिबद्ध संपादक में जानकारी प्रदान कर सकता है, मुझे अधिक आसानी से प्रतिबद्ध बनाता है। 'परिवर्तन के लिए चरणबद्ध नहीं किए गए परिवर्तन' के सूचना क्षेत्र को बंद करने का कोई तरीका है: जो प्रतिबद्ध संपादक को अधिक स्वच्छ बना सकता है। – OlivierBlanvillain

+0

अच्छा जवाब के बाद –

12

मुझे लगता है कि यह सही उपयोग के मामले में जीयूआई warranting है। - हालांकि मैं पूरी तरह से समझता हूं कि यह कमांड लाइन के भीतर भी पर्याप्त रूप से हासिल किया जा सकता है।

व्यक्तिगत रूप से, हर मेरा प्रतिबद्ध, मैं Git-जीयूआई से करते हैं। अगर यह समझ में आता है ऐसा करने के लिए, जिसमें मैं अलग जिसे/लाइनों के साथ कई एटॉमिक कमिट कर सकते हैं।

आंत गुई, एक अच्छी तरह से स्वरूपित रंगीन इंटरफ़ेस में diffs के देखने के लिए सक्षम बनाता है बल्कि हल्का है। ऐसा लगता है कि यह कुछ है जो आपको चेकआउट भी करना चाहिए।

+0

मैं सहमत हूं - यह आपको diff को देखते हुए प्रतिबद्ध संदेश को संपादित करने की अनुमति देता है। –

+0

जानना अच्छा है, लेकिन मैं सीएलआई से चिपकना चाहता हूं। मैंने कुछ पैकेजों का उपयोग किया है, लेकिन मैं अपने वर्कफ़्लो के लिए कड़ाई से टर्मिनल/vim में स्थानांतरित हो गया हूं। हालांकि धन्यवाद। –

+0

हाँ यदि आप जीयूआई से चिपके रहते हैं तो वहां बहुत सारी शानदार सुविधाएं हैं जैसे कि 'गिट बिसेक्ट' जो वास्तव में सुलभ नहीं हैं। – NoBugs

44
git diff HEAD file 

आपको अंतिम प्रतिबद्धता से आपके वर्कट्री में जोड़े गए परिवर्तन दिखाएगा। सभी परिवर्तन (चरणबद्ध या मंचित नहीं) दिखाए जाएंगे।

+1

आपका समाधान काम करता है। लेकिन मैं थोड़ा उलझन में हूँ। शीर्ष प्रतिबद्ध संख्या के लिए HEAD अंक। इसलिए, जब हम जोड़ते हैं, तो कामकाजी निर्देशिका की अनुक्रमणिका अद्यतन होती है और सिर नहीं। तो यह अंतर कैसे दिखाता है। – Mav55

10

स्थानीय अंतर के लिए जाँच करने के लिए:

git diff myfile.txt 

या आप (आप कुछ बदलाव पर वापस लौटना चाहते मामले में) एक diff उपकरण का उपयोग कर सकते हैं:

git difftool myfile.txt 

git difftool और अधिक कुशलता से उपयोग करने के लिए , स्थापित करने और इस तरह मिलकर एक हो जाना, DiffMerge या OpenDiff के रूप में अपने पसंदीदा GUI उपकरण का उपयोग करें।

नोट: आप मौजूदा डीआईआर परिवर्तनों को देखने के लिए . (फ़ाइल नाम के बजाय) का भी उपयोग कर सकते हैं।

प्रत्येक पंक्ति प्रति परिवर्तनों की जांच करने के लिए, का उपयोग करें: git blame जो प्रदर्शित करेगा जो लाइन के लिए प्रतिबद्ध किया गया, जिसमें प्रतिबद्ध।


वास्तविक फ़ाइल से पहले प्रतिबद्ध (जहां master अपनी शाखा है) देखने के लिए, चलाएँ:

git show master:path/my_file 
1

सबसे अच्छा तरीका मैंने पाया, एक समर्पित प्रतिबद्ध जीयूआई का उपयोग कर के एक तरफ, git difftool -d उपयोग करने के लिए है - यह डायरेक्ट तुलना मोड में आपके diff टूल को खोलता है, वर्तमान गंदे फ़ोल्डर के साथ HEAD की तुलना करता है।

8

एक और तकनीक पर विचार करने के लिए यदि आप के लिए प्रतिबद्ध है जो अधिक पंडिताऊ है पिछले करने के लिए फ़ाइल की तुलना करना चाहते:

:

git diff master myfile.txt 

इस तकनीक के साथ लाभ आप भी अंत से पहले करने के लिए तुलना कर सकते हैं के साथ प्रतिबद्ध है

git diff master^ myfile.txt 

और उससे पहले एक:

git diff master^^ myfile.txt 

इसके अलावा, आप कर सकते हैं substi यदि आप मास्टर शाखा में नहीं हैं तो 'मास्टर' के लिए देखभाल '^' चरित्र और 'आप शाखा नाम' के लिए 't' 'tute'।

3

MacOS पर, Git रूट निर्देशिका में जाने के लिए और दर्ज git diff *

+0

यह win10 पर काम नहीं कर रहा है – lucaste

0
git difftool -d HEAD filename.txt 

यह एक तुलना का उपयोग कर छठी भट्ठा टर्मिनल में खिड़की को दर्शाता है।

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