2017-11-22 31 views
5

मेरे फ़ाइलों के रूप में कोड का एक खंड खोज करने के लिए कैसेएक पूरी

.settings { 
} 


.field { 
    margin-bottom: 1em; 
} 

मुझे पता है कि जब

.settings { 
} 

गठन किया गया था चाहते हैं।

मुझे पता है कि मैं कोड कोड की एक पंक्ति खोजना चाहता हूं, तो मैं git log -S".settings {" करता हूं।

लेकिन यहाँ मैं एक पूरे के रूप खोज करने के लिए

.settings { 
} 

चाहता हूँ, मुझे

git log -S".settings {\r}" confirm.less.css 
git log -S".settings {\n}" confirm.less.css 
git log -S".settings {\r\n}" confirm.less.css 

कोशिश की, लेकिन कुछ भी नहीं retrun।

मैं को पूरे कोड के ब्लॉक को नए लाइन वर्णों के विपरीत कैसे खोजूं?

+0

'गिट लॉग-एस' आपको दिखाता है कि निर्दिष्ट स्ट्रिंग को https://git-scm.com/docs/git-log में बदल दिया गया था। तो मेरा अनुमान है कि प्रारंभिक प्रतिबद्धता के साथ नियम ब्लॉक था। यह कहना मुश्किल है कि यह क्यों हो रहा है। केवल 'गिट लॉग - फॉलो confirm.css' को देखने पर विचार करें जो आपको फ़ाइल के संशोधन देगा। – Francisco

+0

@ फ्रांसिस्को कोड की एक पंक्ति को खोजने के बजाय, मैं पूछ रहा हूं कि कोड के ब्लॉक को कैसे खोजा जाए, इस मामले में, 'settings {'और'} 'एक साथ है। – Gqqnbig

+1

यह वास्तव में संभव नहीं है, मुझे नहीं लगता (जहां गिट ट्रैक लाइन-दर-रेखा बदलते हैं)। आप diffs को देखने के लिए कुछ लिख सकते हैं और देख सकते हैं कि लाइनों की संख्या बदल गई है जो आप खोज रहे हैं उसे शामिल करने के लिए पर्याप्त है या आप मैन्युअल रूप से 'गिट दोष' देख सकते हैं और देख सकते हैं कि प्रत्येक पंक्ति कब पेश की गई थी। – Whymarrh

उत्तर

1

इसे ठीक से काम करने के लिए कुछ समस्याएं थीं।

पहले, मैं आप उन्हें बचने के द्वारा अपने रेगुलर एक्सप्रेशन से में {} अक्षरों से परे संभाल, और --pickaxe-regex साथ विस्तारित मिलान को सक्षम करने की जरूरत है। मैंने ब्रैकेट्स के बीच न्यूलाइन समेत किसी भी स्थान से लालच से मिलान करने के लिए एक साधारण \s* का भी उपयोग किया।

यहाँ जिसके परिणामस्वरूप आदेश है कि मैं

git log -S".settings \{\s*\}" --pickaxe-regex confirm.less.css

कौन सा पहली उपस्थिति युक्त प्रतिबद्ध लौटे के साथ आया है।

3

git log -L '/^.settings {/,+1':path/to/it 

प्रयास करें कि आपको लगता है कि श्रृंखला के लिए अद्यतन के पूरे इतिहास मिल जाएगा, लेकिन उनमें से सबसे पुराना तुम क्या चाहते हो जाएगा।

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