2012-03-22 21 views
8

में वाइल्डकार्ड मैं अपने Git पेड़ में नीचे गहरे एक फ़ाइल है:का उपयोग करते हुए पथ Git लॉग

$ git ls-files | grep /Expression.java 
sm/src/main/java/cl/utilities/sm/Expression.java 

मैं पूरे रास्ते लिखे बिना अपनी गतिविधि का एक लॉग प्राप्त करना चाहते हैं।

$ git log --oneline -2 sm/src/main/java/cl/utilities/sm/Expression.java 
2718cdc cleaned up some warnings 
f30cf15 Added missing @Overrides 

... लेकिन टाइप करने के लिए sm/src/main/java/cl/utilities/sm बिना: मूल रूप से मैं इस उत्पादन करना चाहते हैं। मैं चीजों की बहुत सारी कोशिश की, लेकिन उनमें से कोई भी काम किया:

$ git log -- \*/Expression.java 
$ git log -- \*Expression.java 
$ git log -- \*\*/Expression.java 
$ git log -- '*/Expression.java' 
$ git log -- '**/Expression.java' 
+4

Git लॉग - \ */Expression.java काम करना चाहिए, अजीब –

+0

मेरी विंडोज 7 कमांड खोल Git लॉग "*/Expression.java" काम करता है में, लेकिन एकल उद्धरण काम नहीं करते। – yoyo

उत्तर

3

का प्रयोग करें, कोई पलायन या उद्धरण आवश्यक:

git log -- */Expression.java 

विंडोज 7 पर परीक्षण किया गया cmd खोल और गिट बैश में।

अपने खोल के आधार पर, आपको उद्धरण की आवश्यकता हो सकती है - यदि सिंगल कोट्स काम नहीं करते हैं, तो डबल कोट्स आज़माएं।

+0

पुष्टि की है कि यह अब मेरे लिए काम करता है। ऐसा लगता है कि मैं इस समय के आसपास उपलब्ध गिट के कुछ संस्करणों में मौजूद एक बग का शिकार था। जैसा कि http://git-blame.blogspot.com/2012/01/git-1776-1784-and-179-rc2.html में उल्लिखित है, https://github.com/git/git/commit है/5c8eeb8। यह पहली बार मेरे प्रश्न पूछने से कुछ महीने पहले जारी 1.7.7.6 में दिखाया गया था। –

3

उपयोग xargs: एक वाइल्डकार्ड

find . -name 'Expression.java' | xargs git log --oneline -2 
+0

यह मानता है कि फ़ाइल स्थानीय रूप से मौजूद है। क्या होगा यदि आप हटाए गए फाइल को लॉग करना चाहते हैं? – yoyo

0

गिट 2.8 (मार्च 2016) के साथ, वाइल्डकार्ड को अधिक दृढ़ता से पथस्पेक या रीफस्पेक के रूप में समर्थित किया जाता है।

commit aac4fac, commit df714f8, commit 1cc777d (10 फ़रवरी 2016) Jeff King (peff) द्वारा देखें।
(commit e6a6a76 में Junio C Hamano -- gitster -- द्वारा विलय, 24 फ़र 2016)

इसका मतलब है कि:

  • wilcard pathspecs साथ काम करता है: (

    git log -- "*.t" 
    # or 
    git log "*.t" 
    
  • वाइल्डकार्ड refspecs साथ काम करता है जब खोज उदाहरण के लिए 'b' से शुरू होने वाले एक प्रतिबद्ध संदेश के लिए):

    git log "HEAD^{/b.*}" -- 
    # or 
    git log "HEAD^{/b.*} 
    
संबंधित मुद्दे