当我回到GIT中的前一个分支时,为什么文件夹没有被删除

当我回到GIT中的前一个分支时,为什么文件夹没有被删除,git,visual-studio,Git,Visual Studio,我正在使用VisualStudio管理git中的两个分支(分支A和分支B)。 今天我把A分公司合并成B分公司 我通过执行一个git签出B来确保一切正常。一旦我看到一切都正常,我就进行了一次git签出a,以便继续在分支机构a工作 在我执行git签出a后,我在我的工作目录中找到了新文件夹,这些文件夹属于分支B。为什么在我执行git签出a时,git没有删除这些文件夹 实际上,在我签出分支A后,一个文件夹包含一个新的.csproj文件(仅存在于分支B中),另一个文件夹包含一个修改后的.sln文件(此文件

我正在使用VisualStudio管理git中的两个分支(分支A和分支B)。 今天我把A分公司合并成B分公司

我通过执行一个
git签出B
来确保一切正常。一旦我看到一切都正常,我就进行了一次git签出a,以便继续在分支机构a工作

在我执行
git签出a
后,我在我的工作目录中找到了新文件夹,这些文件夹属于分支B。为什么在我执行
git签出a
时,git没有删除这些文件夹


实际上,在我签出分支A后,一个文件夹包含一个新的.csproj文件(仅存在于分支B中),另一个文件夹包含一个修改后的.sln文件(此文件的内容来自分支B,我必须撤消更改)。

Git处理文件,而不是文件夹。听起来您处于以下情况:

Branch A:

root
└── dir1
    ├── file1

Branch B:

root
├── dir1
│     ├── file1
├── dir2
      ├── file2
当您从分支
B
切换到分支
A
dir2/file2
时,将被删除,因为它不存在于分支
A
上,但
dir2
仍将作为空目录存在。这不是问题,您可以忽略这些空文件夹,或者根据需要删除它们

编辑:在两种情况下,切换分支后会看到文件,根据您的描述,我相信这就是您的体验:

  • 分支B
    上创建新文件时,您不会提交它们,但会将它们添加到
    .gitignore
    。在
    分支B
    上,您不会看到这些文件被更改,因为git会忽略它们。当您切换回
    分支A
    时,git不会删除它们,因为它们未被跟踪,但因为它们不存在ger在分支A上被忽略您将看到这些文件正在被修改。您可以在分支B上运行
    git clean-X
    删除所有这些文件
  • 您在
    分支B
    上创建新文件,但不提交它们。在
    分支B
    上,您将看到这些文件正在被修改(正如您预期的那样)。当您切换回
    分支A
    时,git不会删除这些文件,因为它们没有被跟踪,所以您仍然会看到它们被修改

  • 这些文件夹是否包含文件?可能是因为存在临时忽略的文件(如
    *.obj
    )。签出时
    git
    不会删除这些文件,因此它不会删除这些目录。git有时会删除空文件夹。如果它之前创建文件夹以将文件放入其中,则应该删除。我看到它“忘记”“我有时和从未能够正确描述这种情况。不过,正如您所注意到的,这并不是一个真正的问题。@ICEP在我签出分支a后,文件夹中包含一个新的.csproj文件(仅存在于分支B中),另一个文件夹包含一个修改过的.sln文件(此文件的内容来自分支机构B。我将更新我的问题以包含此信息。分支机构B忽略了哪些文件?或者分支机构B跟踪了哪些文件?@ICEP否,分支机构B不会忽略这些文件。但您的第二个问题让我思考。我如何检查分支机构B中是否跟踪了这些文件?
    git ls文件
    ()可以用于检查跟踪的文件。或者,您可以切换到分支B,查看git status告诉您的信息。