2013-06-05 17 views

risposta

16

Uso git ls-tree:

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

Questo funziona solo per i file che sono stati commessi in pronti contro termine, ma è meglio di niente.

4

Incollare quanto segue nel terminale bash funzionerà, indipendentemente dal fatto che "test.c" esista o meno. È possibile copiare la funzione git-absolute-path nel file .bashrc per comodità future.

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

"readlink" per Mac OS X non ha -f (e presumo * BSD). Suggerimenti su un modo portatile per fare questo? – TomOnTime

+0

Lo script aggiornato funziona? Ho usato http://stackoverflow.com/a/3572105/3215004 – gmatht

Problemi correlati