2011-12-19 22 views
6

Este comando funciona bien:¿Cómo puedo usar rutas completas en git?

git diff relative/path/to/file.ext 

Pero si uso la ruta completa, git dice ese camino "está fuera del repositorio":

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

supongo git no encuentra un directorio en .git/lleno, así que es por eso que falla.

Pero, ¿cómo hago que git comprenda las rutas completas, como lo hace la subversión?

Actualización: versión 1.7.0.5 git

Actualización: Estos archivos son siempre dentro de mi repositorio, y mi directorio actual es también dentro de mi repositorio! Todavía da ese error.

+0

Podría explicar por qué se necesita esto? – Mat

+1

"repositorio externo" generalmente significa que el directorio actual no es parte de un repositorio de git, por lo que los comandos de git no funcionan. Cambie a un directorio de trabajo git, y debería funcionar con cualquier ruta. – poke

+0

@Mat A veces me encuentro con rutas completas a archivos que están dentro de mi repositorio. No quiero tener que buscar la parte correcta de la ruta para diferenciarlos, solo quiero hacer doble clic en la terminal para seleccionar toda la ruta de archivo, pegarla de nuevo y agregar un 'git diff' en el comienzo de la linea Eso es mucho más rápido. –

Respuesta

0

Si desea diferir un archivo fuera del git repo, debe usar una herramienta diff como opendiff y comparar el archivo del repositorio con el otro archivo fuera del repositorio.

No puede comparar archivos externos porque git no "piensa" en los archivos.

+0

Puede, simplemente ejecute 'git diff --no-index - file1 file2' – knittl

13

¿Qué versión de git estás usando? Se debe trabajar independientemente del formato de la ruta, es decir

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

Pero tiene que estar dentro del repositorio git para que esto funcione! Si es absolutamente necesario el comando git para ser ejecutado desde fuera del repositorio, y utilizar los --work-tree--git-dir interruptores:

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

versión 1.7.0.5. En su ejemplo, ¿~/git es la raíz de su directorio de trabajo git? Intenté todas sus sugerencias, pero igual recibí el mismo error. –

+0

@WillSheppard: yep '~/git' es el directorio de nivel superior que contiene el directorio worktree y .git – knittl

+0

Mi git no entendía' ~ 'en' -work-tree'; Tuve que usar la ruta completa. – sam

Cuestiones relacionadas