git se niega a buscar en la rama actual
Configuro un repositorio remoto y puedo enviar nuevos cambios a él, pero no puedo obtener de él, siempre recibo el mensaje de error (bastante críptico):
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly
¿Qué significa? ¿Qué debo hacer para habilitar la recuperación?
(Tenga en cuenta que este repositorio remoto solo se utiliza como un repositorio de copia de seguridad, por lo que debería ser más o menos una copia exacta de mi repositorio local. Realmente no puedo entender por qué puedo empujar a ella pero no buscar de ella...)
Mi configuración se ve como:
[remote "origin"]
url = ssh://blablablah
fetch = +refs/*:refs/*
mirror = true
6 answers
Lo que estás tratando de hacer es buscar la rama en la que estás trabajando. Es decir, usted está en la rama master e intenta actualizarla. Eso no es posible. Es más común actualizar las ramas remotes/*
y luego introducirlas en las locales. Lo que quieres es, tal vez,
git remote add otherrepo thehost:/the/path.git
Que configurará el repositorio para ser obtenido en remotes/otherrepo/*
. git fetch otherrepo
debería hacer el truco. Alternativamente, puede editar manualmente su .git/config
y establecer fetch
para el control remoto en algo como refs/heads/*:refs/remotes/otherrepo/*
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-10 12:45:16
En caso de que alguien encuentre esto porque específicamente quiere buscar en la rama actual, puede usar la bandera --update-head-ok
. De los documentos :
- u
--update-head-ok
Por defecto, git fetch rechaza actualizar el head que corresponde a la rama actual. Esta bandera desactiva la comprobación. Esto es puramente para el uso interno de git pull para comunicarse con git fetch, y a menos que esté implementando su propia Porcelana, se supone que no debe usar se.
En algunos casos queremos implementar nuestros propios comandos de porcelana, por ejemplo, automatización y herramientas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-06 05:17:03
También esto esto debería funcionar si está en master branch y quiere obtener la última prueba esto
Git pull origin master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-13 18:45:29
He tenido este problema cuando cloné un repositorio sin pensar en lugar de buscarlo, de modo que ambos repositorios eran maestros. Si no ha trabajado en el repositorio remoto, puede arreglar las cosas con los comandos básicos de git de la siguiente manera: (1) eliminar el repositorio remoto, (2) copiar el repositorio local donde estaba el remoto, (3) eliminar el local, y luego (4) configurar el repositorio local usando
git init; git fetch $REMOTE_GIT_REPOSITORY_URL
Entonces git pull
y git push
harán las cosas correctas. La ventaja de evitar git remote
, según la respuesta más eficiente y basada en principios de Michael, es que no necesitas pensar en la semántica de rastrear ramas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-14 12:14:04
¿Estás realmente escribiendo comandos de Git en la línea de comandos, o estás ejecutando el ejecutable de Git desde tu propio código?
Si lo estás ejecutando desde código, ¿estás seguro de que Git está tratando de buscar en el directorio local correcto?
Hay dos maneras posibles de hacer esto:
Utilice las opciones proporcionadas por su lenguaje de programación para establecer el directorio de trabajo correcto antes de ejecutar Git
(C # ejemplo , porque eso es lo que soy usando)Siempre pasa el parámetro
-C
a Git para especificar el directorio con el repositorio local.
Tengo un proyecto en el que estoy llamando al ejecutable Git desde código C#, y recibí el mismo mensaje de error como en la pregunta cuando accidentalmente olvidé configurar el -C parameter
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-08 19:12:51
Tengo el mismo problema. Primero trato de buscar usando este
git fetch [remote_name] [branch_name]
Tuve el mismo problema que usted menciona. Después de eso probé este simple comando.
git pull [remote_name] [branch_name]
Note obtendrá y fusionará los cambios. Si está usando terminal, entonces abra el archivo, requiriendo confirmar el mensaje. Con este mensaje empujará la última confirmación. Pruebe este comando y finalmente podrá empujar la solicitud.
git push [remote_name] [branch_name_local]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-11 06:10:19