promocionado objeto nombre columna campos ambiguos ambiguo ambiguedad ambigua macos git virtualbox

macos - objeto - en where clause es ambigua



GIT fatal: argumento ambiguo ''HEAD'': revisión desconocida o ruta no en el árbol de trabajo (4)

Intento inicializar un nuevo repositorio GIT de Debian (en realidad, una VM en Virtualbox, instalado y en ejecución en Mac OS X):

[david@server-VM-001:~ $] mkdir test [david@server-VM-001:~ $] cd test [david@server-VM-001:test $] git init Initialized empty Git repository in /home/david/test/.git/ fatal: ambiguous argument ''HEAD'': unknown revision or path not in the working tree. Use ''--'' to separate paths from revisions [david@server-VM-001:test (master #) $]

¿Cuál es el problema?


Como otros señalaron, este mensaje proviene de su intérprete de comandos de shell. El problema es que en un repositorio recién creado HEAD ( .git/HEAD ) apunta a una referencia que aún no existe.

% git init test Initialized empty shared Git repository in /Users/jhelwig/tmp/test/.git/ % cd test % cat .git/HEAD ref: refs/heads/master % ls -l .git/refs/heads total 0 % git rev-parse HEAD HEAD fatal: ambiguous argument ''HEAD'': unknown revision or path not in the working tree. Use ''--'' to separate paths from revisions

Parece que el rev-parse se está utilizando sin suficiente comprobación de errores antes de la mano. Después de que se haya creado el primer commit .git/refs/heads ve un poco diferente y git rev-parse HEAD ya no fallará.

% ls -l .git/refs/heads total 4 -rw------- 1 jhelwig staff 41 Oct 14 16:07 master % git rev-parse HEAD af0f70f8962f8b88eef679a1854991cb0f337f89

En la función que actualiza la información de Git para el resto del indicador de shell (versión muy modificada del tema de solicitud de wunjo para ZSH), tengo lo siguiente para evitar esto:

zgit_info_update() { zgit_info=() local gitdir=$(git rev-parse --git-dir 2>/dev/null) if [ $? -ne 0 ] || [ -z "$gitdir" ]; then return fi # More code ... }


Tuve este problema al tener una pantalla personalizada en mi terminal al crear un nuevo proyecto git (tengo mi visualización de rama antes de la ruta, por ejemplo: / current / path). Todo lo que tenía que hacer era hacer mi compromiso inicial con mi sucursal principal para que este mensaje desapareciera.


Usualmente uso git en mi máquina Linux, pero en el trabajo tengo que usar Windows. Tuve el mismo problema al intentar comprometer la primera confirmación en un entorno de Windows.

Para aquellos que todavía enfrentan este problema, pude resolverlo de la siguiente manera:

$ git commit --allow-empty -n -m "Initial commit".


menciona en su respuesta que:

Parece que el rev-parse se está utilizando sin suficiente comprobación de errores antes de la mano

El compromiso 62f162f de Jeff King ( peff ) debería mejorar la solidez de git rev-parse en Git 1.9 / 2.0 (Q1 2014) (además del compromiso 1418567 ):

Para los casos en que no coincidamos (por ej., " doesnotexist..HEAD "), doesnotexist..HEAD tratar el argumento como un nombre de archivo.
try_difference() obtiene este derecho, y siempre se libera en este caso.
Sin embargo, try_parent_shorthand() nunca se libera, lo que lleva a mensajes de error incorrectos o incluso a resultados incorrectos:

$ git rev-parse foobar^@ foobar fatal: ambiguous argument ''foobar'': unknown revision or path not in the working tree. Use ''--'' to separate paths from revisions, like this: ''git <command> [<revision>...] -- [<file>...]''