我应该将.vscode文件夹提交到源代码管理吗?


293

.vscode文件夹是否打算提交给源代码管理?

在一个新的项目中,该文件夹除settings.json文件外为空。什么样的东西会进入这个文件夹?是否像.vs文件夹一样是特定于机器的,特定于开发人员的,因此不提交?还是所有开发人员都应该共享此文件夹,因此应该将其提交?

文件顶部的注释.vscode/settings.json指出:

// Place your settings in this file to overwrite default and user settings.
{
}

这似乎意味着该文件夹应包含特定于项目的设置,因此应包含在源代码中。此外,有关UserVoice的帖子似乎暗示在那里将进行一些键入操作,这也表明它应该被提交。


如果您在Visual Studio中启动一个项目然后提交,则应该有一个正确的(至少是典型的)启动.gitignore FE。如果它打算存在,那么可能会存在。您也可以参考这个我已经没有问题使用。
ChiefTwoPencils 2015年

2
一个好主意,@ ChiefTwoPencils!作为记录,.gitignoreVisual Studio创建的默认设置.vscode在此时间点确实排除了文件夹。但是由于VS Code本身是相当新的,所以他们可能还没有解决。我暂时没有找到该文件夹​​,但我得到了更多信息。
罗纳德·扎里茨(RonaldZarīts),2015年

Answers:


311

.vscode如果要与团队共享设置,任务配置和调试配置,请签入文件夹。我认为,如果要在团队中强制执行设置,通常与团队共享设置(例如,空白与制表符)是有意义的。VS Code团队中的我们也共享调试和特定于任务的设置,因为我们希望我们的团队为VS Code具有相同的调试目标和任务目标。

顺便说一句,您不需要.vscode在项目中有用于设置的文件夹。您还可以在用户级别配置设置。


53
谢谢!“我们在VS Code团队中……”对我来说已经足够了-至少可以开始!
罗纳德·扎里茨(RonaldZarīts),2015年

97
如果要共享文件级设置(如“空白vs.选项卡”),则应查看跨编辑器解决方案,如EditorConfig
Tanz87

2
该目录具有80 MB大小的子目录“ chrome”。您确定这应该提交给存储库吗?
ygoe

10
您一定不能将VSCode用于诸如python项目之类的项目,在该项目中,工作区设置将具有针对VirtualEnv或Anaconda环境之类的特定于环境的python路径。在大多数情况下,以声音方式检查这些文件似乎是一个巨大的问题。而是检入样本/默认文件。
StefanGordon


39

在提交/忽略之间有第三个聪明的选择:带.default后缀的提交。

例如,您可以添加settings.json.gitignore,并承诺settings.json.default,就像通常的做法是(我的团队)与.env文件。

我从视频提交编辑器设置到版本控制中采纳了这一建议通过Mattias Petter Johansson


5
一个settings.json.default是有道理的,但是这是假设你的整个团队使用VS代码和你的代码不被共享给更多的观众。我发现我在GitHub上的开源项目,只是确保将其添加到默认的gitignore中,因为我不想在我的代码库的潜在用户上强制使用特定的IDE。
jamescampbell's

2
@jamescampbell添加特定于IDE的文件几乎永远不会在任何人上强制使用该IDE-它只是给他们一个选择,如果他们碰巧使用了该IDE,则可以获取您的公共环境设置。更大的问题是这些文件是否得到正式支持-即旨在始终保持最新和正常运行。从理论上讲,您可以为所有不同的IDE提供多个IDE环境文件,而不会出现任何冲突。
LightCC

23
  • 永远不要提交.vscode/settings.json-奇怪的例外search.exclude。如果确实需要,请非常小心,仅将要强制实施的项目特定设置放给其他开发人员。
  • 为验证,格式化,编译使用的其他文件,如package.json.eslinttsconfig.json,等
  • 唯一有意义的.vscode是用于调试的复杂启动配置。
  • 请注意,您的系统中可能存在第三方扩展,可能会将私人信息放在那里!

您不能做的就是将整个settings.json内容文件复制并粘贴到中.vscode/settings.json。我看到有人这样做,提交文件是一种残暴行为。在这种情况下,您不仅会破坏其他工作空间,而且会破坏最糟糕的工作空间,您将向用户强制执行您不喜欢美学,UI和体验的设置。您可能会破坏他们的环境,因为有些环境非常依赖系统。想象一下,我有视觉问题,因此我的editor.*用户设置是个性化的,当我打开您的项目时,视觉效果会改变。想象一下我有视力问题,我需要个性化用户编辑器。*设置才能起作用。我会生气的。

如果你是认真的那就不要犯错.vscode/settings.json。通常,可以对特定项目(如验证,编译)有用的设置很有意义,但通常可以使用特定工具配置文件,例如.eslint,tsconfig.json,.gitignore,package.json。等等。我想vscode作者只是添加了文件以简化新手体验,但是如果您想认真一点,那就不要!

唯一的例外,在非常特殊的情况下可以是search.exclude


3
我觉得您的建议.vscode/settings过于严格。使用.eslint.editorconfig归档(如果可以),但是您仍然应该检查.vscode/settings是否确实希望在团队/项目中的所有开发人员之间共享设置
Matt Bierner

3
马特,为什么您要假设所有其他开发人员都使用vscode?可能是使用webstorm,vim,sublime的人,这就是为什么您应该使用eslint等而不是settings.json的原因。
–cerenbero

同样,检查.vscode/settings您是否在使用vscode的团队中工作或正在开发许多开发人员使用vscode的项目中,这是有意义的。并非所有这些设置都具有跨编辑器的等效功能
Matt Bierner

@MattBierner足够公平,如果您正在一家实施编辑器的公司中开发开源项目,但我认为这不是普遍现象,特别是在开源项目中……
Cancerbero 18-10-25

关于第三方扩展的观点非常有效-例如,我相信MS SQL扩展会将连接配置文件添加到项目/工作区settings.json(如果存在)-尽管它不存储凭据,但可能正在检查服务器名称等。
丹·哈里斯

16

总结其他答案

  • 建议通常排除.vscode文件夹,但保留一些选择的JSON文件,以允许团队成员重新创建设置

使用的示例.gitignore代码(以及在何处获取)

这是设置,如https://gitignore.io所建议。您可以在此处搜索“ VisualStudioCode”以获取最新的推荐.gitignore文件。我将这个网站用作.gitignore大多数新存储库的起点:

# Created by https://www.gitignore.io/api/visualstudiocode
# Edit at https://www.gitignore.io/?templates=visualstudiocode

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

### VisualStudioCode Patch ###
# Ignore all local history of files
**/.history

# End of https://www.gitignore.io/api/visualstudiocode

其他因素以及如何自行解决...

包含.vscode文件夹实际上并不会伤害使用其他IDE(或文本/代码编辑器)的任何人。

但是,如果这些文件包含需要特定于您环境的通用设置的通用设置,这可能会对使用VS Code的其他人造成伤害,这些设置在他们的环境中有所不同-例如安装回购协议的绝对路径(VS Code Python扩展名始终放入该目录中)在pythonpath.vscode/settings.json)。关键是要避免保存对本地环境自定义的设置,而只共享每个人都可以使用的设置。

例如,如果IDE设置文件具有到存储库或任何文件/库等的绝对路径,那么那是不好的,不要共享。但是,如果所有引用都是相对的,则它们应该对使用该存储库的任何人都有效(尽管请注意Windows / Unix之间的路径规范差异。)。


关于用户,工作区和文件夹设置的注意事项

注:中设置文件.vscode夹时,你改变了一般只更新文件夹的设置版本(有似乎是一些偶然的例外)。

  • 如果您更改用户设置,它们将存储在其他位置。
  • 如果您对工作空间设置进行更改,它们通常存储在*.code-workspace您当前正在使用的文件夹中(有时它们有时仍会进入文件夹设置文件中-但您可以手动移动它们!)。

这意味着您应将个人PC的自定义设置放入用户设置,并在可能的情况下将特定项目/程序包的通用设置放入其他设置。

  • 我注意到,使用Python扩展名时,.vscode/settings.json文件(保存文件夹设置)始终保存设置下的绝对路径pythonpath,因此我从.gitignore文件中删除了它的排除项,不再将其保存到Python仓库中。即使我使用相对路径保存它,VS Code也会将其重置为绝对路径。
  • 相反,我只是将我需要在Code中使用的所有文件夹保存为工作空间(例如,myproject.code-workspace使用File-> Save Workspace as创建一个文件。这样,您可以控制进入工作空间文件的内容并将其保存到存储库中,同时排除文件夹设置文件(.vscode/settings.json)。您几乎可以在工作空间和文件夹设置文件之间移动任何设置,以控制要保存的内容和不保存的内容。请记住,工作空间文件将覆盖文件夹设置文件中的所有内容。

它的长短是-您只能使用工作区文件,并将所有常用设置放入其中,而将本地设置放入文件夹设置文件中,至少对于Python而言。其他语言可能遵循不同的模式。

当然,您可能还有其他原因来保存.vscode/settings.json文件或文件的某些部分。否则这可能不是您当前语言设置的问题。

你的旅费可能会改变...


10

除了这里的论点之外,为什么不只看实践呢?

.vscode到目前为止,我发现的最大的项目之一是Mozilla Firefox。似乎Firefox团队共享了他们的共同任务和建议的扩展。

因此.vscode,只要您知道自己在做什么,保留它并不是一个坏主意。

当我看到其他共享的大型项目时,我将更新这篇文章.vscode


8

与其他答案相同:否。

作为说明,请考虑Git 2.19(Q3 2018)选择的方法,该方法添加了一个脚本(中的contrib/)以帮助VSCode的用户更好地使用Git代码库。

换句话说,生成.vscode内容(如果尚不存在),请不要对其进行版本控制。

请参阅提交12861e2提交2a2cdd0提交5482f41提交f2a3b68提交0f47f78提交b4d991d提交58930fd提交dee3382 Johannes Schindelin(dscho)的提交54c06c6(2018年7月30日
(由Junio C gitsterHamano合并--commit 30cf191中,2018年8月15日)

contrib:添加脚本以初始化VS Code配置

VS Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并且可用于Windows,macOS和Linux。
在其他语言中,它通过扩展支持C / C ++,该扩展不仅提供构建和调试代码的功能,还提供Intellisense的功能,即代码感知的完成和类似的优点。

此修补程序添加了一个脚本,该脚本有助于设置环境以使其与VS Code有效结合:只需运行Unix shell脚本contrib/vscode/init.sh(创建相关文件),然后在VS Code中打开Git源代码的顶级文件夹


1

答案为“否”,因为.vscode文件夹是用于此编辑器的,如果您使其他个人设置感到困惑,则不应将这些个人设置推送回购,因此可以将其添加到项目的.gitignore文件中以忽略更改


17
我不同意你的严格立场。如@BenjaminPasero的答案中所述,您不必这样做,但是在许多情况下(例如共享任务配置)是有道理的。当然,注意一个队友是很好的,不要不必要地强加他们的偏好。
罗纳德·扎里茨(RonaldZarīts)

是的,这就是为什么我们有单独的用户设置和工作空间设置(工作空间中的.vscode/settings.json文件)的原因:code.visualstudio.com/docs/getstarted/…只有诸如工具配置之类的内容才能进入工作空间设置
Matt Bierner

@RonaldZarīts .vscode文件夹是关于你自己的编辑器的设置和代码风格,我认为这只是给自己用的,所以正如我以前说过,不要夹推到git的控制流。
贾嘉琳

6
@jialinwang对不起,我已经做到了。除了笑话,它还包含一些有用的共享项,例如在我的项目中,我们有(1)launch.json-用于调试的启动配置,这对于安装来说可能并非易事。(2)settings.json项目级别设置,如要使用的TypeScript编译器,空格规则,(3)tasks.json-构建命令。您可以选择不共享,但是我们发现它很有用。
罗纳德·扎里茨(RonaldZarīts)

@jialinwang不,不是。它们是文件夹级别的设置。您不仅应包括顶级文件夹,而且还具有子文件夹专用的任何设置,还应包括这些设置。最重要的是让你的用户偏好出来的文件夹级别设置(这是其他原因同样重要)。您应在文件夹级设置中使用的这类内容应适用于整个文件夹:格式化程序,短绒,空白约定(例如,修剪最后的尾随新行,制表符大小...)...
DylanYoung

1

保留设置而不将其提交到项目git存储库中的一种简单方法是创建一个工作区并将文件夹添加到其中。

创建工作空间时,需要保存一个文件code-workspace。该文件包含自定义设置,只需将此文件保存到git存储库中即可免费添加.vscode.gitignore文件中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.