假设您正在 git
f1.md
中使用 Visual Studio Code 处理文件 branch-1
,然后切换到不包含该文件的 branch-2
。
你会分心,因为有人打电话问你问题,或者你必须参加那个令人头脑麻木的会议;两个小时后,您将返回 Visual Studio Code。
因为你切换了上下文,你忘记了你切换了分支,现在你认为你在
branch-1
上并编辑 f1.md
而不看顶部或你所在的分支,因为“打开编辑器”仍然显示它。
假设您再次受到干扰,这次您确实对
f2.md
中的文件 branch-2
进行了更改。
稍后,您执行
git add -A
和 commit
并推送到分支 2。现在branch-2有文件f1.md,它本来不应该在那里。
为什么“打开编辑器”会记住我在
branch-1
时正在编辑的文件?这有些危险。 “打开编辑器”可能应该记住为特定分支打开的文件,而不是在所有分支上普遍打开的文件。
有人可能会说我们应该远离
git add -A
,因为它同时添加了跟踪和未跟踪的文件。但是,纯粹从用户体验的角度来看,期望“打开编辑器”记住特定于某个分支的文件而不显示在其他分支中编辑的文件似乎是合理的。
当您在 Git 中切换分支时,Visual Studio Code (VSC) 会保留打开的编辑器(和分支),因为它假定您在切换回该分支时继续处理文件。
“打开编辑器”不知道分支上下文并记住上次会话的打开文件。当您返回计算机/编辑器时,您需要检查您所在的分支。在VSC中,您可以通过检查左下角的Git状态来查看分支。或者在集成终端中使用
git branch
或 git status
。
也许还有 VS Code 团队的问题,请访问 https://github.com/microsoft/vscode 或 https://github.com/microsoft/vscode-docs/issues?
我关于 git 使用方法的 2 美分:
我开始欣赏单独的阶段和提交阶段,因为它提供了一个相当自然的步骤来审查我的更改。
恕我直言,期望
git add -A && git commit
能够猜透我的想法,注定会带来不好/不想要的变化。
我建议你总是花时间回顾一下你将要承诺的事情。
很抱歉,如果我没有明白您问题的真正问题。但这是因为 VS Code 中的源代码管理没有自动刷新吗?我在另一页这里找到了答案。
在您的用户设置(JSON)中,您可以通过添加到您的用户设置(JSON)来将 git.autorefresh 设置为 true
"git.autorefresh": true,
在您签出分支后,VS Code 将自动刷新源代码管理 - 这包括根据您签出的分支将打开编辑器中打开的所有文件刷新到相应的版本。
VS Code 1.89 具有按分支记住打开文件(“工作集”)的功能。使用
scm.workingSets.enabled
设置来启用它,并使用 scm.workingSets.default
设置来控制切换到还没有工作集的分支的行为。
我很确定这是一项功能和/或设计。
一方面,在切换到另一个分支之前,git 不会自动暂存未暂存的更改。它只会将未暂存的更改按原样保留在工作树中,或者发出警告并中止操作。
最重要的是,VS Code 的编辑缓冲区比工作树“高”一个级别。在您实际调用“保存”操作之前,编辑器中的更改不会持久保存到文件系统中。
鉴于此,我认为如果 VS Code 在分支切换/提交签出时自动关闭所有打开的编辑器,那么通常会造成破坏和意外。如果其中一个编辑器有未保存的更改,那将是一个更大的痛苦 - 然后必须提示用户是否保存这些更改,并且可能有多个文件包含未保存的更改。
另请参阅如何使 VS Code 在重新打开工作区时不从工作区文件夹外部的文件恢复打开的编辑器?.
如果您想拥有您想要的东西,您可以:
@popular git branch tabs
)