Arturo, parte de este equipo, nos ha hecho el favor de escribir este post porque controla muy bien el tema.
Solución:
Esto también podría ocurrir debido a un cambio de mayúsculas y minúsculas en el nombre del archivo. Tuve el mismo problema y esto es lo que me solucionó.
git config core.ignorecase true
Cierto para Mac o PC.
Soluciones alternativas en: Los siguientes archivos de árbol de trabajo sin seguimiento se sobrescribirán al finalizar la compra
Sin una imagen completa del repositorio, lo que sigue es más una conjetura que otra cosa, pero podría explicar la situación. Digamos que su historial se ve de la siguiente manera:
A -- C [origin/master]
B [HEAD, master]
Usted escribe:
Este archivo ha estado apareciendo constantemente y cuando lo elimino del sistema de archivos, git dirá que eliminé este archivo, mientras que en los otros mensajes dice que no está rastreado.
Supongo que puedes haber corrido
git rm --cached
y cometió esa eliminación en cometer B
; por lo tanto, el archivo ya no se rastrea en su repositorio local y aún está presente en su árbol de trabajo.
Mientras tanto, la rama ascendente recibió confirmación C
de uno de sus colaboradores, en el que
estaba no eliminado del control de versiones. Lo que estás tratando de efectuar con
git pull --rebase
es algo como esto:
A -- C [origin/master]
B' [HEAD, master]
Sin embargo, como dice el mensaje,
los […] árbol de trabajo sin seguimiento [file] se sobrescribirá al finalizar la compra
De hecho, rebobinando cometer C
(para reproducir B
encima) daría lugar a la revisión de
(desde cometer C
) para ser desprotegido en su árbol de trabajo, en el que ya existe un archivo sin seguimiento del mismo nombre. El contenido de ese archivo sin seguimiento puede ser valioso; es posible que no desee que ese archivo se sobrescriba con otra versión del mismo. Por lo tanto, Git se detiene en seco y te dice qué está mal.
Editar: Aquí hay un ejemplo de bebé que reproduce la situación…
cd ~/Desktop
mkdir test
cd test
git init
touch README.md
git add README.md
git commit -m "add README"
# simulate a remote branch moving ahead by one commit
# (that doesn't remove the README)
git checkout -b origin_master
printf "This is a README.n" > README.md
git add README.md
git commit -m "add description in README"
# remove the README and create a new commit on master
git checkout master
git rm --cached README.md
git commit -m "remove README"
# simulate an attempt to rebase master to its "upstream" branch, origin_master
git rebase --onto origin_master master
Ese último comando arroja lo siguiente:
First, rewinding head to replay your work on top of it...
error: The following untracked working tree files would be overwritten by checkout:
README.md
Please move or remove them before you can switch branches.
Aborting
could not detach HEAD
te sugiero que corras
git fetch
git log --stat origin/master..master --
para comprobar si algo así sucedió.
Eliminar todos los archivos sin seguimiento (cuidado):
git clean -d -fx ""
Si haces scroll puedes encontrar las crónicas de otros sys admins, tú igualmente tienes el poder dejar el tuyo si lo deseas.