所以我在一个分支机构工作,决定使用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上删除它?
答案 0 :(得分:2)
请注意,git rm --cached
仅从索引中删除文件。你为什么不想从文件系统中删除它们?
git
正在尽力阻止你失去工作。假设docs
中的文件在另一个分支中安全提交,请使用
$ git checkout -f master
来自git checkout
文档:
-f
- 力
切换分支时,即使索引或工作树与HEAD不同,也要继续。这用于丢弃本地更改。当从索引中检出路径时,不要在未合并的条目上失败;相反,未合并的条目将被忽略。
答案 1 :(得分:1)
听起来问题是你从repo中删除了目录,但是没有从你的工作树中删除,所以当试图签出master
时,Git发现有一个文件会被覆盖。我假设你想合并分支,并在合并中包含删除;之后,Git将不再跟踪此目录,但您仍然可以在工作副本中使用它。
您可以执行您描述的操作,或者您可以将该目录移开,检出master,合并您的分支,然后将目录移回。您可能也会在此目录中添加.gitignore
规则,以便Git不会将其列入状态,或者意外地将其添加回仓库。