2011-05-02 19 views
6

Estoy intentando configurar un repositorio git con un worktree definido manualmente a través de:git-alijo incapaz de encontrar el árbol de trabajo

cd /Users/braitsch/repos/project1 
git --git-dir=. --work-tree=/Users/braitsch/projects/project1 init 

Después de ejecutar lo anterior puedo añadir archivos que se encuentran en "/ Usuarios/braitsch/projects/project1 "
vía: git add somefile o git add.
Commits trabajan muy bien como hacer llamadas a "rama git"

Sin embargo, git stash list lanza el siguiente error:

fatal: /usr/local/Cellar/git/1.7.4.4/libexec/git-core/git-stash cannot be used without a working tree.

¿No esconder soportados en definidos por el usuario de trabajo de los árboles?

git config --local core.worktree 
echoes out : /Users/braitsch/projects/project1 

Cualquier pensamiento sería muy apreciada!

ACTUALIZACIÓN -------- --------

Como @jleedev indican a continuación, no parece haber un error al intentar llamar "escondite git" desde fuera el árbol de trabajo. Sin embargo, mi solución es simplemente hacer un cd en el árbol de trabajo y luego llamar al escondite precediendo primero la ruta al gitdir. Inconveniente, lo sé, pero las siguientes obras para el comando escondite:

git --git-dir="projects/proj1/.git" stash list 

Este problema no aparece afectando a otros comandos de valores como añadir, cometió, rama, etc Sólo "escondite" por lo que yo puedo decir .

Si usted está buscando para romper-lejos de la estructura por defecto de tener su carpeta .git anidado dentro de su worktree, es posible encontrar los pasos siguientes útiles:

  1. crear un directorio en el que desea para almacenar su repositorio git
  2. crear un directorio en el que desea guardar los archivos de su va a realizar un seguimiento de (ambos pueden estar en cualquier lugar del sistema de archivos)
  3. CD en la carpeta del repositorio git y ejecute:

    git --git-dir=. --work-tree="path-to-your-project-folder" init 
    

    Esto iniciará un nuevo repositorio y lo vinculará a la carpeta de su worktree externo.

Para ejecutar complemento estándar, elimine, rama, comprometerse comandos, cd en el repositorio Git y ejecutar el comando como de costumbre. Para ejecutar el alijo, asegúrese de hacer un cd en en su árbol de trabajo y luego ejecutar el alijo como indiqué anteriormente, introduciendo el comando con la ruta a su gitdir.

Respuesta

5

Este puede ser un error en el comportamiento del comando o su informe de errores. Los comandos que requieren un árbol de trabajo y se implementan como guiones verifican su presencia con este comando:

git rev-parse --is-inside-work-tree 

la que fallará si no está realmente dentro el árbol de trabajo, en contra de lo que el mensaje de error implica. Los comandos que se implementan en C, por otro lado, llaman al setup_work_tree, que automáticamente se chdir s en el árbol de trabajo. Si la función require_work_tree en git-sh-setup se puede modificar de forma segura para que coincida con esto, no lo sé.

1. git-am.sh git-bisect.sh git-mergetool.sh git-pull.sh git-rebase--interactive.sh git-rebase.sh git-stash.sh git-submodule.sh

+0

Gracias por la respuesta, sí, esto parece ser un error. Por favor vea mi apéndice a mi pregunta original anterior. – braitsch

0

Editar: Configuración de

Trata la variable de entorno GIT_WORK_TREE para que apunte a la carpeta adecuada.


Respuesta original:

Esa era una orden poco extraño. Prueba esto en su lugar.Es mucho más fácil:

mkdir yourRepo 
cd yourRepo 
git init 
.. edit some files 
git add . 
git commit -m "First commit" 
+1

Hola, eso no soluciona el problema. "git init" simplemente inicializa un nuevo repositorio en su directorio de trabajo actual. Estoy tratando de definir el árbol de trabajo en otro lugar en el sistema de archivos a través de los comandos en mi ejemplo anterior. Sin embargo, parece que cuando haces esto, el comando git stash falla. – braitsch

+0

Roger Roger. Ver mi respuesta editada. Aclamaciones. – ralphtheninja

0

me encontré con esto usando git for Windows 1.8.3 a través ConEmu.

Mi problema parece estar relacionado con una asignación de unidad que tenía el que asigna un camino a la unidad C: a P:\

git reconoció la trayectoria de la unidad asignada como /p en el indicador, pero el escenario de git config --local core.worktree estaba volviendo P:/

Lo reinicié utilizando git config --local core.worktree /p, lo que me dio p:/ como el nuevo valor, pero ese escondite fijo. Parece que no le gustó la letra mayúscula.

Resulta que simplemente tuve que cd /c y luego cd /p para tener aviso git Había ingresado al directorio del árbol de trabajo. No estoy seguro de por qué git es sensible al cd pero no pude detectar que estaba en el lugar correcto cuando se inicializó el shell.

Cuestiones relacionadas