windows Git发出警告:无法rmdir

ddarikpa  于 2022-12-14  发布在  Windows
关注(0)|答案(4)|浏览(648)

我在windows10上使用git bash,它最近更新为creators update。
每当我试图在分支之间切换时,我会得到以下内容

$ git fetch && git checkout master
warning: unable to rmdir Ionic_Developemnt: Directory not empty
Checking out files: 100% (6312/6312), done.
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

我不知道为什么会发生这种情况,在Ionic_Development文件夹中也有一个.git隐藏文件夹
有谁能帮这个忙吗为什么这么错误_/_

shyt4zoc

shyt4zoc1#

git checkout上的warning: unable to rmdir意味着您要切换到一个不存在此目录的分支; git尝试删除它,但有一些临时文件是git无法删除的;这个目录不是空的,所以git也不能删除它,因此出现警告。

p5cysglq

p5cysglq2#

这种情况通常发生在文件仍在使用的时候。我个人在使用atom编辑器时也有过这种情况。尝试关闭编辑器,或者任何正在运行的正在监视更改的编译器,然后尝试再次 checkout 。

dvtswwa3

dvtswwa33#

找到答案,请使用git checkout --recurse-submodules代替git checkout

使用git config submodule.recurse true来告诉git always use --recurse-submodules(仅适用于git 2.14以上版本),如果你只想在本地项目级别使用,则添加--local

**原因:**当git checkout无法正确处理这些子模块时(Git〈2.13)会发生此问题。
**参考:**https:github.com/gitextensions/gitextensions/issues/2966#issuecomment-622666568
原始答案

实际上,我认为this answer部分正确:O
如果一个文件夹是由该文件夹中的local .git跟踪的,当你切换分支时,它会根据.git进行更改(例如,从我们的Angular 来看,如果另一个分支没有这个文件夹,它会被删除)。
如果.gitignore忽略了某个文件夹,则在切换分支时,该文件夹将保持不变。
但是,如果文件夹是子模块,由submodule.git跟踪,则local.git在切换分支时会尝试使用rmdir,这会导致问题。

rbpvctlc

rbpvctlc4#

我知道这是旧的,但是如果有人像我一样在这个问题上犯了错误,也可能是你切换到了一个不同的分支,并且你有一个Git子模块。在目录中找到.git隐藏文件夹,如果你不需要它成为子模块,你可以删除它, -只要确保在切换之前将该文件夹提交到当前分支的父存储库中。

rm -r .git

相关问题