2012-11-19 8 views
17

मैंने 2008 से 2010 तक विजुअल स्टूडियो प्रोजेक्ट को अपग्रेड करने की गलती की है, बिना पहले मेरे पिछले बदलावों की जांच किए। इस वजह से मेरे पास एक विशाल सिस्टम जेनरेट की गई फ़ाइल (10k + लाइनें) है जिसमें प्रत्येक चौथी पंक्ति बदल गई थी।गिट diff में अगली संशोधित फ़ाइल पर जाएं?

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

क्या आपके पास git diff करने के बाद अगली संशोधित फ़ाइल पर जाने का कोई तरीका है ताकि आपको प्रत्येक फ़ाइल पर हर बदलाव को स्क्रॉल करने की आवश्यकता न हो?

+0

तुम सिर्फ 'Git diff fileName' का उपयोग आप एक छोटा सा परिवर्तन सेट है, तो कर सकते हैं। – zbrunson

+0

मैं संशोधित की गई सभी फाइलों को देखना चाहता हूं, बस विशालकाय को छोड़ दें ... –

उत्तर

31

डिफ़ॉल्ट रूप से, git diffless के माध्यम से इसके आउटपुट को पाइप करता है। तो आप अगले शीर्षलेख की खोज के लिए less आदेशों का उपयोग कर सकते हैं। /^diff टाइप करें और दबाएं को अगली फ़ाइल पर जाने के लिए दर्ज करें।

+1

क्या मुझे पहले अपने वर्तमान diff से बाहर निकलने की आवश्यकता है? मैंने इसे अपने वर्तमान diff के अंदर से करने की कोशिश की और कहा कि 'पैटर्न नहीं मिला' –

+1

'/' कमांड उस स्थिति से खोजें जो आप देख रहे हैं। तो अगर आपको वह संदेश मिलता है, तो आउटपुट में 'diff' के साथ शुरू होने वाली कोई और पंक्तियां नहीं हैं। –

+0

असल में, ऐसा लगता है कि आप वास्तव में * क्या करना चाहते हैं, इन अलग-अलग कामों में इन (असामान्य) परिवर्तनों को विभाजित करना है। एक 'गिट जोड़ें big.file.name' और फिर' गिट प्रतिबद्ध 'करें, फिर शेष सभी परिवर्तन अन्य फाइलें होंगी जो * बड़े नहीं हैं। –

0

एक और विकल्प update-index कमांड को कॉल करना है और यह बताएं कि एक विशाल फ़ाइल नहीं बदली है। here का एक और पूर्ण उदाहरण है।

1

मैं आपको tig का उपयोग करने का सुझाव देता हूं। यह git के लिए एक शाप इंटरफेस है, और एक बहुत अच्छा है।

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

मुझे लगता है कि किसी भी डेबियन-आधारित डिस्ट्रो में आप केवल apt-get install कर सकते हैं, या आप इसे लिंक साइट से बना सकते हैं।

+2

डिफ़ॉल्ट रूप से 'tig' आपको फ़ाइलों के बीच त्वरित रूप से कूदने की अनुमति नहीं देगा, लेकिन आप इसे निम्नलिखित बाध्यकारी के साथ कर सकते हैं:' बाध्य diff F:/^ \ + \ + \ + ' – VitalyB

+1

@VitalyB इसके लिए धन्यवाद - मैं हूं आश्चर्य है कि इसके लिए एक डिफ़ॉल्ट बाध्यकारी नहीं है। भविष्य के लिए, उपरोक्त 'शिफ्ट + एफ' के साथ अगली फाइल की खोज होगी। चूंकि यह कोई खोज नहीं है, इसलिए 'n' अगली फ़ाइल में स्थानांतरित हो जाएगा और' shift + n' पिछली फ़ाइल में स्थानांतरित हो जाएगी। – Samaursa

+0

कहने के लिए "चूंकि यह _now_ एक खोज है" भी, 'बाध्य diff' मेरे लिए काम करना बंद कर दिया।यकीन नहीं क्यों, लेकिन यह काम करता है: 'बाध्य चरण एफ:/^ \ + \ + \ + ' – Samaursa

3

अन्य उपयोगी आदेशों के लिए h सहायता के लिए टाइप करें (git diff में होने पर, less में होने पर)।

विशेष रूप से:

      JUMPING 

    g < ESC-<  * Go to first line in file (or line N). 
    G > ESC->  * Go to last line in file (or line N). 
    p %    * Go to beginning of file (or N percent into file). 
    t     * Go to the (N-th) next tag. 
    T     * Go to the (N-th) previous tag. 
    { ( [   * Find close bracket }) ]. 
    } ) ]   * Find open bracket { ([. 
    ESC-^F <c1> <c2> * Find close bracket <c2>. 
    ESC-^B <c1> <c2> * Find open bracket <c1> 
संबंधित मुद्दे