Ответ 1
Без полной картины репо, то, что следует, скорее всего, является догадкой, чем чем-либо еще, но это может объяснить ситуацию. Скажем, ваша история выглядит следующим образом:
A -- C [origin/master]
\
B [HEAD, master]
Вы пишете:
Этот файл постоянно появляется, и когда я удаляю его из файловой системы, git скажет, что я удалил этот файл, а в других сообщениях он говорит, что он не проверен.
Я предполагаю, что вы, возможно, запустили
git rm --cached <file-in-question>
и зафиксировал удаление в commit B
; поэтому файл больше не отслеживается в вашем локальном репо, но он все еще присутствует в вашем рабочем дереве.
В то же время ветка восходящего потока получила commit C
от одного из ваших соавторов, в котором <file-in-question>
не был удален из контроля версий. Что вы пытаетесь сделать с помощью
git pull --rebase
выглядит примерно так:
A -- C [origin/master]
\
B' [HEAD, master]
Однако, как говорится в сообщении,
Исправленное рабочее дерево [...] не обработано [файл] будет перезаписано checkout
В самом деле, перематывание commit C
(чтобы воспроизвести B
поверх него) приведет к пересмотру <file-in-question>
(from commit C
), который будет извлечен в вашем рабочем дереве, в котором одноразовый файл с неизменным именем уже существует. Содержимое этого невоспроизводимого файла может быть ценным; вы можете не захотеть, чтобы этот файл был перезаписан другой версией. Поэтому git останавливается на своем треке и сообщает вам, что не так.
Изменить. Вот пример ребенка, который воспроизводит ситуацию...
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
Эта последняя команда выводит из строя следующее:
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
Я предлагаю вам запустить
git fetch
git log --stat origin/master..master -- <file-in-question>
чтобы проверить, произошло ли что-то подобное.