Desvinculación del archivo Falló. ¿Debería intentarlo de nuevo?


572

Algo está sucediendo con uno de los archivos en mi repositorio git local. Cuando intento cambiar la rama dice:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

¿Qué podría significar eso?


1
Echa un vistazo a esta pregunta
RDL

posible duplicado de [Git rebase tiene el error 'error de desvinculación del archivo'] ( stackoverflow.com/questions/3698369/… )
Josh Lee

hizo el trabajo dado respuesta para usted, si visor de procesos no está funcionando y luego reiniciar y, a continuación, puede eliminar el archivo, también se puede aceptar la respuesta si ha funcionado para usted
dhaval

1
También verifique que el proceso git tenga permisos de escritura en ese archivo.
Boileau

Respuestas:


752

Esto podría significar que otro programa está usando el archivo, lo que impide que git "mueva" el archivo dentro o fuera del directorio de trabajo cuando intenta cambiar las ramas.

Esto sucedió en Windows Vista, donde eclipse es el programa que "usa" el archivo. El archivo puede no estar realmente abierto en eclipse, pero puede haber sido abierto por un proceso ejecutado por eclipse.

En este caso, intente cerrar el archivo en cualquier aplicación que pueda haberlo usado. Si eso no funciona, salga por completo de cualquier aplicación que pueda haber abierto el archivo.


53
En Windows, use ProcessExplorer para encontrar qué proceso tiene abierto el archivo.
Dave C

2
¿Hay alguna manera de escribir una secuencia de comandos como "si este archivo no se puede eliminar (por ejemplo, el archivo simplemente no existe), simplemente omita el archivo".
2xMax

14
En mi caso, ese fue Visual Studio y su complemento Git.
Michał Powaga

8
En Windows, si no tiene ProcessExplorer disponible o no desea descargarlo, puede ejecutar (Windows + R) "resmon", ir a la pestaña CPU y buscar el nombre del archivo en el cuadro de texto "Identificadores asociados".
Raphael

66
Si lo usa GitKraken, puede obtener esto si ejecuta comandos como un rebase
mtpultz

285

Tuve este problema y lo resolví con el comando: el comando git gc anterior elimina los archivos temporales e innecesarios. (Recolector de basura.)


43
git pulliniciado git gcautomáticamente, y gc intentó acceder a algunos archivos .pack y .inx. Estos fueron retenidos por el proceso "Windows Git", ese git pullcomando de propiedad . Ejecutar git gcmanualmente y que git pullrealmente resuelve el problema.
Nikita

44
Mientras se ejecuta git gctengo el mismo error otra vez cuando gcestaba en marcha
Prakash K

44
"Ejecutar git gc manualmente y luego - git pull realmente resuelve el problema". Esto ayudó Gracias nikita
sangam

Esto me ayudó también. Ejecuté esto en Windows con Git Bash
Ascalonian

Después de comenzar el git pull, recibí este error. Presioné CTRL + C para detener el tirón, ejecuté el git gc y luego git pull nuevamente, el problema había desaparecido y nada se rompió al interrumpir el tirón.
daniel sp

84

esta solución desde aquí funcionó para mí:

Esta es una respuesta específica de Windows, por lo que sé que no es relevante para usted ... Solo la incluyo para el beneficio de los futuros buscadores.

En mi caso, fue porque estaba ejecutando Git desde una línea de comando no elevada. "Ejecutar como administrador" me lo arregló.


2
Trabajó para mi. Ran VS como administrador y luego lanzó el símbolo del sistema de VS
Sentinel

3
I: escrito Ctrl+Cpara terminar la larga lista de archivos que no se pueden vincular; salí de gitbash, mi IDE y la aplicación de Windows GitHub; reinició gitbash en modo elevado "Ejecutar como administrador"; y corrió git gc --aggressive. Tardó un tiempo en completarse, pero lo logró sin errores.
Mark McClelland

Si cree que es un duplicado, debe marcarlo como tal, no agregar una respuesta que apunte a otra respuesta
Liam

2
@Liam Esta pregunta es anterior, pero esta respuesta fue solo para la otra pregunta, y no hay una sola respuesta a esta pregunta, lo que hace que sea más difícil establecer una como duplicada.
Sepehr

Esto funcionó bastante bien para mí. Ninguna de las respuestas anteriores lo hizo. Muchas gracias.
Roberto Rodriguez

35

Encontré este problema al hacer un git pull.

Lo intenté git gcy resolvió mi problema.


Me encontré con este problema en la máquina con Windows y esta solución no funcionó inicialmente. Sin embargo, una vez que ejecuté este comando desde un símbolo del sistema de administrador, resolvió mi problema.
William W

23

En mi caso no hay procesos que toquen el archivo o directorio. Tal vez sucede si la ruta es muy larga, debido a una restricción del sistema operativo (Windows). Intente habilitar el indicador de soporte de ruta larga en la configuración global de git como se indica a continuación:

git config --global core.longpaths true

o intente configurar el indicador de respuesta sí / no si no es conflictivo para usted

set GIT_ASK_YESNO=false

Si el camino es demasiado largo, no he encontrado una solución exitosa.


55
No sé por qué, pero configurar "git config --global core.longpaths true" fue útil para mí.
Maxim

GIT_ASK_YESNO, no puedo encontrar información sobre este. De dónde viene ?
majkinetor

ver: stackoverflow.com/questions/3698369/… por ejemplo; No sé si funciona con versiones recientes de git (2.9)
andhdo

core.longpathscon adicionales: reinicio --hard ciruela gc trabajado para mí - pero tuvo que cerrar Android Studio para no estropear con su acumulación en las herramientas
Mike bovquier


10

Esto podría ser útil para alguien; Si todo lo anterior no funcionó para usted, siga estos pasos:

  1. Cierre su IDE (el mío era Eclipse, no estoy seguro si se aplica a Intellij y otros) o cualquier otra aplicación que pueda estar usando git.

  2. Abra git desde la línea de comando (en mi caso tenía git bash) y ejecútelo git gccomo lo han mencionado otros.

Esto hizo la magia para mí.


Esta es la única respuesta que ayudó en mi caso, usando Android Studio
0101100101

10

Como estoy usando gitkraken y símbolo del sistema, me encontré con el mismo problema. Y luego ejecuto el git gccomando, resolvió mi problema. Así que estoy feliz y quiero compartir algunos de los puntos que podrían ser útiles.

Que git gcva a hacer

git gc eliminar objetos inalcanzables que pueden haberse creado a partir de invocaciones anteriores de git add.

Cuando correr git gc?

Desde doc , se alienta a los usuarios a ejecutar esta tarea de forma regular dentro de cada repositorio para mantener una buena utilización del espacio en disco y un buen rendimiento operativo.

¿Cómo hacer que sea autoconfigurable?

Algunos comandos git pueden ejecutar automáticamente git gc; vea la bandera --auto a continuación para más detalles. Si sabe lo que está haciendo y todo lo que quiere es deshabilitar este comportamiento permanentemente sin más consideraciones, simplemente haga

git config --global gc.auto 0

8

En mi caso (Win8.1, TortoiseGit ejecutándose), fue el proceso llamado "caché de estado TortoiseSVN" que bloqueaba el archivo.

Matarlo me permitió ejecutar "git gc" sin más problemas. TortoiseGit activa el proceso anterior, por lo que no es necesario reiniciarlo manualmente.


7

Tuve este tipo de problema en Windows 7 y resultó ser debido a algún git.exeproceso huérfano .

Para resolverlo, abra el Administrador de tareas y elimine todos los git.exeprocesos.

Como los gitcomandos son de corta duración, normalmente nunca debería ver ninguno git.exeen el Administrador de tareas. Cuando están allí, generalmente significa que algo está mal, y debes eliminar esos procesos.


7

Tengo este problema en Windows. Cerré mi IDE (Android Studio) y seleccioné SÍ en git shell. Funcionó.


5

En Windows 8: ejecuté git gc y decía que git gc ya se estaba ejecutando, ejecuté git gc --force y ejecutó el recolector de basura.

Luego podría cambiar ramas y fusionar sin ningún problema, intente git gc --force.

Quizás el proceso gc no se detuvo con gracia por una razón u otra.


También es válido para Windows 10.
oguzhan

4

Tuve este problema con los .tmparchivos en la /.git/objects/packcarpeta. Creo que algo había fallado durante una inserción o extracción, por lo que eliminé estos archivos temporales y restablecí el HEAD a mi último commit. No estoy seguro si esto es aconsejable, pero funcionó para mí. También git count-objects -vme dio una lista de los .tmparchivos que no pertenecían a la carpeta del paquete.

O para suprimir los mensajes y / n en Windows git open cmd.exey ejecutar:

SETX GIT_ASK_YESNO false

visto aquí: https://twitter.com/petercamfield/status/494805475733807104


Después de haber ejecutado git gc, git count-objects -vayuda a identificar los objetos temporales sobrantes en la packcarpeta.
mistaecko

4

Pude resolver esto abriendo Powershell como Administrador y desde allí git checkout <branch_name>


Gracias @ bar-horing. Esto me ayudó a identificarlo como un problema de permiso. Una vez que arreglé el permiso de Windows para esa carpeta, funcionó.
Kumar

3

Me enfrenté al mismo problema mientras hacía 'git pull'. Intenté el comando git de limpieza manual 'git gc' y resolvió mi problema.


44
Si bien este es un intento de respuesta, no agrega nada que no esté cubierto por otras respuestas (como esta ). Si está intentando confirmar que esta solución funciona o desea agradecerle al autor de esa respuesta, no publique una respuesta para hacerlo. Después de ganar más reputación , obtendrá los privilegios suficientes para votar las respuestas que desee, que es la forma en que Stack Overflow dice gracias.
Scott Weldon


2

Después de probar varias soluciones finalmente git clean -fme ayudaron.

EDITAR: Me encuentro con el problema varias veces: cerrar todos los procesos que dependen de git parece ayudar (como gitbash, Eclipse IDE, etc.)


2

Como se indicó anteriormente, hay algo más que contiene los archivos. La cosa es que ese programa no parece sospechoso para nosotros. Estaba tratando de hacer un git pull desde la consola, mientras tenía GitKraken abierto. Al cerrar GitKraken se solucionó el problema.


2

Después de ejecutar el comando

git rm -rf foo.bar

Veo error

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

Porque otro programa está usando este archivo . Por ejemplo, cuando ejecuto la aplicación web Java en el modelo de depuración o la aplicación web en el servidor, no puedo eliminar el archivo de registro. Apague el servidor de aplicaciones (o apague el proceso de depuración), vuelva a intentar

git rm -rf foo.bar

Veo que el archivo ha sido eliminado.


1

Esta puede ser una ventana separada de gitk ejecutándose para ver un poco de historial de git.

Simplemente cierre esa ventana para solucionar ese problema.


1

Me encontré con este problema ejecutando git Bash y Eclipse EGit al mismo tiempo. Solución: cierre Eclipse. Tampoco estaría de más correr git gccomo mencionó @khilo.



1

Me encontré con este problema en Windows, es posible que desee ejecutar git bash como administrador y luego ejecutar los comandos de deseo, que me resolvieron el problema.


1

Si está desarrollando una aplicación web, una razón común es olvidarse de apagar el servidor. Por ejemplo, esto podría ser un simple proceso Node.js, o en Windows, su proceso IIS se ejecuta de manera más discreta como proceso en segundo plano.


1

Intenté cada consejo en esta página y nada me ayudó. Estaba haciendo un git fetchy ungit reset --hard origin/development me dio el error Enderece. No pude restablecer la última confirmación.

Lo que ayudó fue verificar otra rama y luego verificar la rama anterior. Muy extraño pero resolvió el problema.


1

Si cerrar su IDE y ejecutar varios comandos git enumerados aquí no ayudará, intente eliminar manualmente todos los procesos Java en ejecución. Probablemente me quedó un proceso de Java del eclipse que de alguna manera mantuvo abierto un archivo de configuración.


1

Si está utilizando Docker y ejecuta Windows 10, es posible que desee detener los contenedores donde se puede ejecutar el archivo. Para mostrar los estados de sus contenedores, ejecute

docker ps -a

Para detenerlos, simplemente corre

docker stop <container name or container id>

Esto funcionó para mí ya que estoy ejecutando mis archivos locales usando un archivo .sh


1

Trabajó para mí, probé en windows:

Detén tu servidor ejecutar desde IDE o cierre su IDE

Intellij / Ecllipse o cualquiera, funcionará.


0

En Windows, vi este error en un git clonerepositorio (bastante grande). Cerrado SmartGit y se detuvo el software de copia de seguridad (CrashPlan), y después de que haya funcionado. No estoy seguro de cuál de los 2 hizo el truco, pero si se ejecuta cualquiera de los dos, esto también podría hacerlo por usted.


0

Tuve el mismo problema al hacer un git pull y, como se indicó anteriormente, se debió a un programa que contenía esos archivos y no permitía un git pull. El cierre del programa ayudó. Por lo general, el IDE (como Eclipse) desde donde se registran los archivos lo mantendrá en segundo plano. Cerrar el mismo y volver a ejecutar git pull me resolvió el problema.


0

Tuve este mismo error y al cerrar la aplicación que tenía el archivo abierto lo resolvió. Pude regresar y presionar "Y"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.