2012-06-03 4 views
5

आम तौर पर जब मैं git grep जारी है, यह केवल वर्तमान निर्देशिका उदाहरणजब मैं उपनिर्देशिका में हूं तो पूरे पेड़ में grep को कैसे गिट करना है?

$ cat A 
1 
$ cd d 
$ cat B 
1 
$ git grep 1 
B:1 
$ cd ..;git grep 1 
A:1 
B:1 

के लिए खोज और नीचे, होगा मैं कैसे git grep बता "पूरे पेड़, कोई फर्क नहीं पड़ता वर्तमान कार्यशील निर्देशिका मैं तैयार हूं खोज" कर सकते हैं?

उत्तर

8

Git उपनाम चलने वाले खोल आदेशों हमेशा शीर्ष स्तर की निर्देशिका (git config man page देखें) में क्रियान्वित कर रहे हैं, ताकि आप अपने .gitconfig फाइल करने के लिए इस जोड़ सकते हैं:

[alias] 
    rgrep = !git grep 

वैकल्पिक रूप से, आप git rev-parse --show-toplevel का उपयोग पाने के लिए कर सकता है रूट निर्देशिका, जिसे फिर आप एक स्क्रिप्ट या उपनाम के आधार के रूप git grep को पारित कर सकते हैं:

git grep $pattern -- `git rev-parse --show-toplevel` 
+0

मुझे पता था, लेकिन यह बहुत लंबा और गुंजाइश है ... मुझे उम्मीद थी कि 'grep-all' –

+0

उत्तर अपडेट किया गया है;) – georgebrock

+0

अभी भी आदर्श नहीं है, क्योंकि पथ शीर्ष स्तर से नहीं चलेंगे, लेकिन अच्छा । –

0

अपना Git कॉन्फ़िग फ़ाइल को यह जोड़ें grepall उर्फ ​​बनाने के लिए है कि होगा घ ओ आप क्या चाहते हैं:

[alias] 
    grepall = !git grep 

(गैर-देशी उपनाम, उदा। के रूप में उल्लेख उन है कि, एक ! के साथ शुरू हमेशा भंडार के शीर्ष स्तर से चलाए जा रहे हैं।)

+0

अभी भी आदर्श नहीं है, क्योंकि पथ वर्तमान निर्देशिका से नहीं दिखाए जाएंगे, लेकिन धन्यवाद –

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