git mv后,未跟踪的工作树文件上的Git签出失败

时间:2018-07-24 13:01:40

标签: git-checkout git-mv

我的本​​地分支机构有问题。当我尝试做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作为目录名的路径。

0 个答案:

没有答案