【问题标题】:Visual studio still lists projects even after changing Git branch即使更改了 Git 分支,Visual Studio 仍会列出项目
【发布时间】:2016-09-14 05:10:47
【问题描述】:

我正处于从 TFS 到 Git 的过渡阶段。我使用源代码树进行提交。

我在我的解决方案中添加了两个新的类库 - CMS.Core、CMS.Data

我在主 Web 项目中推送了更改。没有一个 CMS.Core 或 CMS.Data 项目被推送到主控或提交。

现在我为我的 sprint 创建一个名为 Sprint 20 的新分支。我希望这些新项目都不会推送到服务器。我检查了 git 服务器中的代码,它们不存在。

现在我将工作分支切换到新分支,但我仍然有这两个新添加的项目。由于我从没有这些项目的 master 创建了这个分支,我想知道这两个项目如何仍在我的解决方案中。

我已经在 notepad++ 中检查了项目文件,并且没有对这些项目的引用。这是否意味着即使我切换分支,文件仍然存在,即使它不在 master 中?

【问题讨论】:

    标签: git visual-studio


    【解决方案1】:

    没有任何 CMS.Core 或 CMS.Data 项目被推送到主控或提交。

    以下是我假设您不知道的事情:

    Git 有一种叫做 3-states 的东西。

    上面描述了这 3 个状态。


    完整的答案在这里:git checkout carries unstaged files to the new branch

    这是给你的简短摘要。

    The missing part

    工作目录和暂存是在所有分支之间共享(* - 有一种方法可以绕过它,并通过存储或工作树为每个分支提供干净的 3 个状态)More info about worktree is here

    但在您的情况下,工作目录和暂存是共享的,因此当您在分支之间“移动”时,所有未提交的内容都将保留在那里,除非您处理它。


    【讨论】:

    • 所以分支是合乎逻辑的,我切换到哪个分支并不重要,我有相同的物理文件集?
    • 不完全是。只有修改过的/新文件将被共享。如果有一个文件被提交并且它是分支的一部分,一旦你切换到这个分支,它将被添加到工作目录中。但是如果这个文件不是第二个分支的一部分,除非你修改它,否则它不会在你的工作目录中。
    • 规则很简单:所有未跟踪、修改/删除的文件都会用status命令显示,其余文件不会在status中弹出
    • 未跟踪的文件不受 Git 的控制,因此当我切换分支时它无法为我删除它?
    • 未经检查的文件是 git 没有关于它们的历史记录的文件。如果它们被跟踪,当你切换分支时,git 不会删除它们。您可以使用 git clean、'git reset'、'git worktree' 和 git stash -u 从工作目录中“删除”这些文件。
    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2017-03-07
    • 2016-03-29
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多