我的本地分支机构有问题。当我尝试做git checkout <branch>
时,出现以下错误消息:
error: The following untracked working tree files would be overwritten by checkout:
... (list of files)
Please move or remove them before you switch branches.
Aborting
我认为原因是事实,在当前分支中,我已经使用git mv
重命名/移动了一些文件。
此错误消息中列出的所有文件均以旧路径列出(即,移动/重命名操作之前的路径)。有什么办法可以解决此问题?我现在想移至我的master分支,并将其与当前分支合并,因此此后应该没有问题,但目前,我不知道如何成功切换分支(然后进行合并,如果可能还会有一些问题。
编辑: 我可以使用-f选项签出,但问题仍然存在,因为出于相同的原因,现在我无法合并(实际上,现在的路径是相反的,即现在错误消息包含在数据库分支),我不知道强制git进行此合并的选项。
我不确定,但是对于结帐和合并问题,可能使用相同的解决方案。
在@LutzBüch评论之后,我试图确切显示此仓库中发生了什么。
我有分支 master 和数据库。数据库分支仅在与数据库严格相关的部分上起作用。这部分代码保留在名为db
的目录中。在某个时候,我不得不将此目录名更改为DB
,所以我做了一些git mv
。让我们从上一次合并开始,直到一切仍然有效。
git checkout master
git merge database
git checkout database
git commit
{now the renaming happens}
git mv db/. tmp/.
git mv tmp/. DB/.
git commit {no other changes were made}
{added some renaming related changes, i.e. changed paths in 2 files}
git commit --amend
{now it's becoming the standard}
git commit {multiple times}
git checkout master {fails}
最后一个命令失败,并带有前面提到的错误消息。列表中的所有文件都具有带有旧目录名的路径,即db
。使用git checkout -f master
后,当我尝试进行合并时,收到了以DB
作为目录名的路径。