noticias falacias ejemplos ejemplo composicion clasificacion claridad anfibologia ambigüedad ambiguedad git

git - falacias - fatal: argumento ambiguo ''origen'': revisión desconocida o ruta que no está en el árbol de trabajo



falacias de ambiguedad o de claridad (4)

git diff origin menudo en el pasado

En un entorno diferente no funciona. No tengo ni idea de por qué.

user@host> git diff origin fatal: ambiguous argument ''origin'': unknown revision or path not in the working tree. Use ''--'' to separate paths from revisions, like this: ''git <command> [<revision>...] -- [<file>...]''

Estado:

user@host> git status On branch master nothing to commit, working directory clean

Mandos a distancia

user@host> git remote -v origin https://example.com/repos/djangotools (fetch) origin https://example.com/repos/djangotools (push)

Versión:

user@host> git --version git version 2.7.4

Con "git version 1.8.1.4" trabaja git diff origin .

Por cierto , veo el mismo mensaje de error si uso "git diff origin / master"

BTW2, creo que el "/ master" es redundante. El valor predeterminado de Sane es comparar la sucursal local con la misma sucursal en el sitio remoto.


A veces las cosas pueden ser más simples. Vine aquí con el problema exacto y probé todas las sugerencias. Pero luego descubrí que el problema era simplemente que la ruta del archivo local era diferente y que estaba en una carpeta diferente. :-)

p.ej -

~ / myproject / mygitrepo / app / $ git diff app / TestFile.txt

debería haber sido

~ / myproject / mygitrepo / app / $ git diff TestFile.txt


El comando git diff normalmente espera que uno o más hashes de confirmación generen su diff. Parece que estás suministrando el nombre de un control remoto.

Si tuviera una rama con el nombre de origin , el hash de confirmación en la punta de la rama se habría utilizado si hubiera proporcionado origin al comando diff, pero actualmente (sin la rama correspondiente) el comando producirá el error que está viendo. Puede ser el caso de que anteriormente estuviera trabajando con una rama llamada origin .

Una alternativa, si está tratando de ver la diferencia entre su sucursal local, y una sucursal en un control remoto sería algo como:

git diff origin/<branchname>

git diff <branchname> origin/<branchname>

U otras variantes documentadas .

Edit: habiendo leído más, me doy cuenta de que estoy un poco equivocado, el git diff origin es una abreviatura para diferenciar contra la cabeza del control remoto especificado, por lo que git diff origin = git diff origin/HEAD (¿ comparar la rama local de git con la rama remota? ¿Se muestra "origin / HEAD" cuando se ejecuta "git branch -r"? )

Parece que su origen no tiene una CABEZA, en mi caso esto se debe a que mi control remoto es un repositorio simple que nunca ha tenido un conjunto de CABEZA.

Ejecutar git branch -r le mostrará si se establece el origin/HEAD , y si es así, a qué rama apunta (por ejemplo, origin/HEAD -> origin/<branchname> ).


Esto funcionó para mí al ganar. Reemplace REL_PATH_TO_FILE con la ruta relativa al archivo para eliminar https://help.github.com/articles/removing-sensitive-data-from-a-repository/ Los documentos dicen que la ruta completa, pero con errores Para mí, así que probé el camino de rel y funcionó.

<from the repo dir>git filter-branch --force --index-filter "git rm --cached --ignore-unmatch REL_PATH_TO_FILE" --prune-empty --tag-name-filter cat -- --all


Me encontré con la misma situación en la que comandos como git diff origin o git diff origin master produjeron el error reportado en la pregunta, es decir, Fatal: ambiguous argument...

Para resolver la situación, ejecuté el comando.

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master

para configurar refs / remotes / origin / HEAD para que apunte al origen / rama principal.

Antes de ejecutar este comando, la salida de git branch -a era:

* master remotes/origin/master

Después de ejecutar el comando, el error ya no ocurrió y la salida de git branch -a fue:

* master remotes/origin/HEAD -> origin/master remotes/origin/master

(Otras respuestas ya han identificado que la fuente del error es que HEAD no se está configurando para el origen. Pero me pareció útil proporcionar un comando que se pueda usar para corregir el error en cuestión, aunque puede ser obvio para algunos usuarios).

Información Adicional:

Para cualquiera que esté dispuesto a experimentar y avanzar y retroceder entre la configuración y la eliminación de refs / remotes / origin / HEAD, aquí hay algunos ejemplos.

Desarmar:
git remote set-head origin --delete

Para establecer:
(formas adicionales, además de la forma que se muestra al comienzo de esta respuesta)
git remote set-head origin master para establecer origen / cabeza explícitamente
O
git remote set-head origin --auto para consultar el control remoto y establecer automáticamente el origen / HEAD en la rama actual del control remoto.

Referencias:

  • Esta respuesta tan
  • Este comentario de SO y su respuesta asociada
  • git remote --help ver descripción de set-head
  • git symbolic-ref --help