2015-08-31 10 views
7

मैं गिट में कैसे एक निश्चित लेखक से मौजूद सभी पंक्तियों को निर्धारित करता हूं। उदाहरण के लिए कहें, टोनी ने मेरी परियोजना पर काम किया था और मैं अपनी विकास शाखा में सभी लाइनों को ढूंढना चाहता था जो अभी भी मौजूद हैं और टोनी द्वारा लिखे गए प्रतिबद्धता से थे?लेखक द्वारा संशोधित सभी मौजूदा लाइनों को खोजें

+0

क्या आप क्या 'Git दोष से अलग चाहते हैं क्या करता है 'प्रदान करता है? – wnoise

+1

@wnoise मैं सभी फ़ाइलों के लिए अनिवार्य रूप से गिट दोष खोजने के लिए एक रास्ता तलाश रहा हूं और केवल एक विशिष्ट लेखक के लिए आउटपुट केवल grep। – stevebot

उत्तर

7

शायद git blame FILE | grep "Some Name"

या आप रिकर्सिवली दोष से अधिक फ़ाइलों के माध्यम से खोज + करना चाहते हैं:

for file in $(git ls-files); do git blame $file | grep "Some Name"; done 

या आप देख रहे हैं यदि आप ऊपर से मिलता था क्या की तुलना में कुछ अलग उत्पादन के लिए, सवाल को अद्यतन करने के लिए इस पर विचार कृपया आप चाहते हैं कि आउटपुट के बारे में अधिक स्पष्ट।

नोट: मैंने मूल रूप से नीचे दिए गए दृष्टिकोण का उपयोग करने का सुझाव दिया था, लेकिन जिस समस्या के साथ आप इसे चला सकते हैं वह यह है कि यह संभवतः आपकी कार्यशील निर्देशिका में फ़ाइलों को भी ढूंढ सकता है जो वास्तव में गिट द्वारा ट्रैक नहीं किए जाते हैं, और इसलिए git blame उन फ़ाइलों के लिए असफल हो जाओ और लूप तोड़ें।

find . -type f -name "*.foo" | xargs git blame | grep "Some Name" 
7

sideshowbarker ज्यादातर सही है, लेकिन एक निश्चित दूसरा आदेश है:

find . -type f -exec git blame {} \; | grep "Some Name" 

हालांकि मैं ऐसा करने के लिए पसंद करेंगे:

for FILE in $(git ls-files) ; do git blame $FILE | grep "Some Name" ; done | less 
संबंधित मुद्दे