2013-06-05 8 views
16

से संबंधित फ़ाइल का पूर्ण पथ प्राप्त करें, मैं रेपो के सापेक्ष फ़ाइल के पूर्ण (पूर्ण) पथ को कैसे प्राप्त करूं?गिट: रेपो

$ cd lib 
$ git absolute-path test.C# how to do this? 
lib/test.c 
+6

"पूर्ण पथ" और "रेपो के सापेक्ष" एक-दूसरे से विरोधाभास प्रतीत होता है? – WiseOldDuck

उत्तर

16

उपयोग git ls-tree:

$ cd lib 
$ git ls-tree --full-name --name-only HEAD test.c 
lib/test.c 

फ़ाइलों को रेपो में प्रतिबद्ध किया गया है के लिए यह केवल काम करता है, लेकिन यह कुछ नहीं से बेहतर है।

4

आपके बैश टर्मिनल में निम्नलिखित को चिपकाकर काम करेगा, इस पर ध्यान दिए बिना कि "test.c" वर्तमान में मौजूद है या नहीं। आप भविष्य की सुविधा के लिए गिट-पूर्ण-पथ फ़ंक्शन को अपनी .bashrc फ़ाइल में कॉपी कर सकते हैं।

git-absolute-path() { 
    fullpath=$([[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}") 
    gitroot="$(git rev-parse --show-toplevel)" || return 1 
    [[ "$fullpath" =~ "$gitroot" ]] && echo "${fullpath/$gitroot\//}" 
} 

git-absolute-path test.c 
+1

मैक ओएस एक्स "रीडलिंक" में नहीं है -फ (और मुझे लगता है * बीएसडी)। ऐसा करने के लिए एक पोर्टेबल तरीके पर सुझाव? – TomOnTime

+0

क्या अद्यतन स्क्रिप्ट काम करती है? मैंने http://stackoverflow.com/a/3572105/3215004 का उपयोग किया – gmatht

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