从分支机构中的存储库中删除目录后,无法在git中检出master

时间:2010-01-08 18:27:06

标签: git

所以我在一个分支机构工作,决定使用git rm -r --cached docs从repo中删除我的docs目录。一切顺利。承诺,工作目录干净,一切都很好。现在,当我尝试git checkout master以便我可以将此分支合并回master时,我收到以下错误:

error: Untracked working tree file 'docs/bin/.htaccess' would be overwritten by merge.

现在我有什么办法可以回到我的主分公司吗?我是否需要将docs目录放回到repo中,然后切换分支,然后在master上删除它?

2 个答案:

答案 0 :(得分:2)

请注意,git rm --cached仅从索引中删除文件。你为什么不想从文件系统中删除它们?

git正在尽力阻止你失去工作。假设docs中的文件在另一个分支中安全提交,请使用

$ git checkout -f master

来自git checkout文档:

  

-f
   - 力
  切换分支时,即使索引或工作树与HEAD不同,也要继续。这用于丢弃本地更改。

     

当从索引中检出路径时,不要在未合并的条目上失败;相反,未合并的条目将被忽略。

答案 1 :(得分:1)

听起来问题是你从repo中删除了目录,但是没有从你的工作树中删除,所以当试图签出master时,Git发现有一个文件会被覆盖。我假设你想合并分支,并在合并中包含删除;之后,Git将不再跟踪此目录,但您仍然可以在工作副本中使用它。

您可以执行您描述的操作,或者您可以将该目录移开,检出master,合并您的分支,然后将目录移回。您可能也会在此目录中添加.gitignore规则,以便Git不会将其列入状态,或者意外地将其添加回仓库。