2013-06-05 96 views

回答

16

使用git ls-tree

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

這隻適用於已經提交到回購的文件,但它總比沒有好。

4

無論「test.c」目前是否存在,將以下內容粘貼到您的bash終端都將起作用。您可以將git-absolute-path函數複製到.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

Mac OS X「readlink」沒有-f(我認爲* BSD)。建議以便攜的方式來做到這一點? – TomOnTime

+0

更新後的腳本是否有效?我用http://stackoverflow.com/a/3572105/3215004 – gmatht