首页 > 解决方案 > 在 git checkout 之后,我看到另一个分支的文件夹

问题描述

我正在做一个小回购。我有分支master,m1,m2,m3,m4和m5。我最近在 m4 上工作,创建了一个目录并提交了我的更改。现在我签出 m5,但我刚刚在 m4 上创建的那个目录仍然存在。试图理解为什么会这样,如果/我应该怎么做。

例如

PS C:\Repos\mystuff> git co m5
Switched to branch 'm5'
PS C:\Repos\mystuff> git ls-tree -r --name-only m5
.gitattributes
.gitignore
LICENSE
README.md
PS C:\Repos\mystuff> git st
On branch m5
nothing to commit, working tree clean
PS C:\Repos\mystuff> ls


    Directory: C:\Repos\mystuff>


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2019-09-14  11:02 AM                04   <== old folder from m4
-a----       2019-07-23   7:25 PM             66 .gitattributes
-a----       2019-09-03   7:58 PM           5980 .gitignore
-a----       2019-07-23   7:25 PM           1065 LICENSE
-a----       2019-07-23   7:25 PM             32 README.md

为什么那个旧文件夹仍然显示在 ls 中,即使它不在分支的文件中并且没有显示为未跟踪?

我可以/应该(安全地)在不弄乱 m4 的情况下删除它吗?

标签: gitcheckout

解决方案


Git 不跟踪文件夹,只跟踪文件。

签出m5应该删除m4不在的文件m5,但它不会删除该文件夹,除非它之后是空的。

例如,如果它包含任何未跟踪的文件,Git 不会删除这些文件或文件夹。


推荐阅读