在Visual Studio中切换分支不会刷新解决方案资源管理器

36

我可能漏掉了一些基础知识,但我正在尝试使用TFS的Git版本。

我正在使用Visual Studio 2015预览版(也许这是我的问题),所以我从一个解决方案创建了一个主分支,并从这个主分支创建了一个分支; 我将其称为version2。

我对version2进行了更改,但我没有提交合并同步或任何内容。 因此,在messing around with version 2之后,我回到Team Explorer,转到分支选项卡,并双击main(我还尝试了右键单击switch)。

我希望我的Solution Explorer不会显示我对version 2所做的更改,因为我现在已经切换到main。但情况并非如此,我仍然可以在Solution Explorer中看到我在version2中所做的所有更改。 那么,如何使Solution Explorer反映我当前正在使用的分支?


1
如果我理解正确的话,那不是它的工作方式。如果你想加载一个新的解决方案,你需要双击主分支中的 .sln 文件。这样做不会显示差异。为了查看差异,你可以选择一个分支或单个文件,右键比较。听起来你想右键点击主分支并与你的本地版本2分支进行比较,以查看你已经进行但尚未提交的更改。 - Rodders
好的,让我用另一种方式问一下。假设我在本地仓库上有一个主分支,从主分支我创建了两个分支event1和event2。我对event1进行了一些更改,现在我想切换到event2并进行不同的更改。我不想在解决方案资源管理器中看到我在event1中所做的内容出现在event2中。例如,我在event1中添加了一个新的aspx页面,我可以在解决方案资源管理器中看到这个新的aspx页面。我转到团队资源管理器,双击event2打开解决方案资源管理器,我不想看到在event1中创建的新aspx页面。这样说清楚了吗? - Bryan Dellinger
1
团队资源管理器和解决方案资源管理器没有关联。团队资源管理器将允许您查看服务器上的内容,并执行各种源代码控制任务。而解决方案资源管理器则会显示您在Visual Studio中打开的当前解决方案中的内容。在您想要操作的分支上,右键单击分支名称,然后点击“获取最新版本”,使用Windows资源管理器打开.sln文件(以确保清晰度)。进行您的更改并关闭。再次为第二个分支重复这个过程(获取最新版本并打开),您不应该看到来自第一个分支的更改。希望对您有所帮助! - Rodders
1
右键点击没有“获取最新”选项。在“视图—>团队资源管理器—>分支”中,它显示了我当前的Git存储库和我的分支。右键单击某个分支将会弹出如下选项:切换;创建新本地分支;合并;删除;查看历史记录;或发布分支。 - Bryan Dellinger
2个回答

34

Git的模型与TFVC根本不同。您需要将文件提交到您的分支(您不一定需要将更改或分支推送到远程服务器)。一旦您提交更改,切换分支将按照您预期的方式进行。

Git基于频繁地向本地分支提交更改的模型。即使代码尚未编译,也可以将其提交到本地分支......您始终可以稍后重新基于此提交或挑选它。


1
通常情况下,您甚至不能在未提交更改的情况下切换分支。有人能解释一下吗?他是指在Visual Studio中吗?使用GIT命令行工具?@MrHinsh的答案与此说法相矛盾。 - gravidThoughts
@gravidThoughts 在我回答这个问题的时候,Visual Studio是那样的。感谢您指出答案已不再准确;我会尽快更新以确保正确性。 - Daniel Mann
这是我的问题。虽然我正在学习使用 TFS 的 Git,但似乎我需要始终保持本地提交的思维模式。 - Caverman

17

在Git中,默认情况下,如果您有未提交的更改并切换到其他分支,这些更改会被移动到新的分支。Git认为这是您想要的。

如果您想保留更改并留在v2分支上,需要使用该分支检出提交更改。然后可以切换到v1分支查看解决方案变化。


这正是我的解决方案的行为方式。我不知道这一点。谢谢。 - L_7337
1
原来你并不是唯一感到惊讶的人。请查看http://gitless.com/,了解旨在改善此类问题的有趣项目。 - Tim Abell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接