2011-12-19 22 views
6

Questo comando funziona bene:Come posso utilizzare i percorsi completi in git?

git diff relative/path/to/file.ext 

Ma se io uso il percorso completo, git dice che il percorso "è repository esterno":

git diff /full/path/then/relative/path/to/file.ext 

suppongo git non trova una directory .git in/pieno, ecco perché non funziona.

Ma come faccio a far capire a git percorsi completi, come fa subversion?

Aggiornamento: versione git 1.7.0.5

Aggiornamento: Questi file sono sempre dentro la mia repository, e la mia directory corrente è anche dentro la mia repository! Dà ancora quell'errore.

+0

Ci potrebbe spiegare il motivo per cui avete bisogno di questo? – Mat

+1

"repository esterno" di solito significa che la directory corrente non fa parte di un repository git, quindi i comandi git non funzionano. Passa a una directory di lavoro git e dovrebbe funzionare con qualsiasi percorso. – poke

+0

@Mat Talvolta trovo percorsi completi per i file che si trovano nel mio repository. Non voglio dover smanettare per selezionare la parte corretta del percorso per differenziarli, voglio solo fare doppio clic sul terminale per selezionare l'intero percorso file, incollarlo di nuovo e aggiungere un 'git diff' al inizio della linea. È molto più veloce. –

risposta

0

Se si desidera diffare un file al di fuori del repository git, è necessario utilizzare uno strumento diff come opendiff e confrontare il file dal repository con l'altro file all'esterno del repository.

Non è possibile confrontare i file esterni perché git non "pensa" nei file.

+0

Puoi semplicemente eseguire 'git diff --no-index - file1 file2' – knittl

13

Quale versione di git stai usando? Dovrebbe funzionare indipendentemente dal formato del percorso, vale a dire

cd git 
git diff -- git.c 
git diff -- ~/git/git.c 

Ma bisogna essere all'interno della repository git per questo al lavoro! Se è assolutamente necessario il comando git da eseguire al di fuori del repository, utilizzare i --work-tree e --git-dir interruttori:

git --work-tree=~/git --git-dir=~/git/.git diff -- git.c 
git --work-tree=~/git --git-dir=~/git/.git diff -- ~/git/git.c 
+1

versione 1.7.0.5. Nel tuo esempio, è ~/git la radice della tua directory di lavoro git? Ho provato tutti i tuoi suggerimenti, ma ho ancora lo stesso errore. –

+0

@WillSheppard: yep '~/git' è la directory di livello superiore contenente il worktree e la directory .git – knittl

+0

Il mio git non ha capito' ~ 'in' --work-tree'; Ho dovuto usare il percorso completo. – sam

Problemi correlati