.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!作为记录,Visual Studio创建的默认.gitignore在此时间点确实排除了.vscode文件夹。但是由于VS Code本身是相当新的,所以他们可能还没有解决。我暂时没有找到该文件夹​​,但我得到了更多信息。

#1 楼

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

Btw,您不需要在项目中的.vscode文件夹中进行设置。您还可以在用户级别配置设置。

评论


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

– Tanz87
16-10-7在2:40

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

– ygoe
17年6月1日在8:50



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

– StefanGordon
18 Mar 27 '18 at 18:14

在symbols.json上进行跟进:stackoverflow.com/questions/51876769/…

–裂土器234
18年8月16日在12:11

因此,这个流行的答案似乎是错误的/不完整的。

–ripper234
18年8月17日在13:02



#2 楼

在commit / ignore之间,有第三个聪明的选择:使用.default后缀进行提交。例如,您可以将settings.json添加到.gitignore中,然后提交settings.json.default,这与.env文件的做法(在我的团队中)很像。

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

评论


settings.json.default很有意义,但这是假设您整个团队都在使用vs代码,并且您的代码库没有被更广泛的受众共享。我发现我在GitHub上的开源项目,只是确保将其添加到默认的gitignore中,因为我不想在我的代码库的潜在用户上强制使用特定的IDE。

–詹姆斯·坎贝尔
'18 Sep 2'在19:36

@jamescampbell添加特定于IDE的文件几乎绝不会在任何人上强制使用该IDE-它只是使他们可以选择使用公用IDE来获得常用环境设置。更大的问题是这些文件是否得到正式支持-即旨在始终保持最新状态并可以正常工作。从理论上讲,您可以为不同的IDE提供多个IDE环境文件,而不会出现任何冲突。

– LightCC
20年5月13日在19:55

我不明白,您是否将settings.json.default放入.vocode?然后放入团队设置吗? VSCode是否尊重其中的内容?它甚至不是一个json文件。

– Quuxuu
20 Aug 16 '22:11



@Quuxuu将.default放在.vscode中。 VSC无法识别。 settings.json位于gitignore中,因此如果团队成员要使用默认值-只需将settings.json.default复制到settings.json(新文件,git会忽略)。这样,您以后就可以使用自己的个人喜好覆盖它,而无需提交更改。

–提姆克
20/08/17在16:21



@LightCC将IDE特定的文件夹保留在开源项目中仍然是不好的做法。当然,这使他们可以选择使用我的环境设置,但是很可能他们已经设置了自己的环境。除非项目需要特定的IDE(插件等),否则最好使其保持不可知状态,即使那样我也可能.gitignore。如果有人需要IDE设置,他们总是可以询问。出于标准化目的在公司内部例外。

–SentientFlesh
20-10-29在1:28



#3 楼

总结其他答案
建议通常排除.vscode文件夹,但保留允许其他开发人员重新创建共享设置的JSON文件。
设置示例包括:

语言特定运行测试套件的测试配置(settings.json
短绒棉布的扩展设置和代码格式化工具可强制执行此仓库中使用的语言规则(settings.json
运行和调试配置(launch.json
共享的任务-如果使用VS Code(tasks.json)管理,请注意,有些设置可以存储在用户设置或工作空间文件中,也可以从.vscode文件夹传输到其中。参见下文。

示例.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


在上面的.gitignore文件中,.vscode/*行说要排除.vscode文件夹中的所有内容,但是!.vscode/a_specific_file行告诉git“不”忽略该文件夹中的某些特定文件(settings.jsonlaunch.json等)。最终结果是,.vscode文件夹中的所有内容都被排除在外,而其他行之一中专门命名的文件除外。

其他因素
回购中包括.vscode文件夹实际上并没有
会伤害使用其他IDE(或文本/代码编辑器)的任何人。
但是,如果这些文件包含需要特定于您环境的通用设置的环境,这可能会伤害使用VS Code的其他人。 -就像安装回购的绝对路径一样(VS Code Python扩展始终将其放入pythonpath中的.vscode/settings.json中)。关键是要避免保存针对您的本地环境定制的设置,而只共享每个人都可以使用的设置。
例如,如果IDE设置文件具有到存储库或任何文件/库等的绝对路径,那么那很不好,请不要共享。但是,如果所有引用都是相对的,则它们应该对使用该存储库的任何人都有效(尽管请注意Windows / Unix之间的路径规范差异。)。

关于用户,工作区和文件夹设置
注意:.vscode文件夹中的设置文件通常仅在更改设置的文件夹版本时才会更新(但是似乎确实有很多例外)。

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

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

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

它的长短是-您可以只使用一个工作区文件,并将最常用的设置放入其中,而将本地设置放入文件夹设置文件中,尽管这似乎取决于您使用的扩展名/语言。
当然,您可能还有其他原因要保存.vscode/settings.json文件或文件的某些部分。否则这可能不是您当前语言设置的问题。
您的里程可能会有所不同...

评论


最好做:!.vscode / settings.json.default然后将mv settings.json更改为settings.json.default

– JohnFlux
20 Jul 29'23:57



是的,那是另一种选择。您可以将默认/通用版本保存到存储库中,然后让人们制作他们在此之后使用的本地版本。但是,很难协调以后要进行的任何更改。

– LightCC
20年7月30日在2:02

#4 楼


千万不要提交.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

评论


我觉得您对.vscode / settings的建议过于严格。如果可以,请使用.eslint或.editorconfig文件,但如果您确实希望在团队/项目中的所有开发人员之间共享设置,则仍应签入.vscode / settings。

–马特·比纳(Matt Bierner)
17年12月6日在19:31

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

–cancerbero
17年12月6日在21:34

同样,如果您在使用vscode的团队中工作,或者您在许多开发人员使用vscode的项目中工作,则签入.vscode / settings是有意义的。并非所有这些设置都具有等效的跨编辑器

–马特·比纳(Matt Bierner)
17年6月6日在21:40

@MattBierner相当公平,如果您正在一家实施编辑器的公司中开发开源项目,但是我认为这不是普遍现象,特别是在开源项目中...

–cancerbero
18-10-25在2:44

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

–丹·哈里斯(Dan Harris)
19年5月15日在13:15

#5 楼

为什么不看这里的争论呢?
到目前为止,我发现的最大的项目之一就是Mozilla Firefox。
看起来Firefox团队共享了他们的共同任务,并且
,所以我认为保留.vscode并不是一个坏主意,只要您知道自己在做什么。
当我看到其他共享.vscode的大型项目时,我会更新这篇文章。 br />

#6 楼

与其他答案相同:否。

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

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

请参阅commit 12861e2,commit 2a2cdd0,commit 5482f41,提交f2a3b68,提交0f47f78,提交b4d991d,提交58930fd,提交dee3382,提交54c06c6(2018年7月30日),作者:Johannes Schindelin(dscho)。(由Junio C Hamano-gitster合并-in commit 30cf191,2018年8月15日) />


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

VS Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并且可用适用于Windows,macOS和Linux。
除其他语言外,它还通过扩展支持C / C ++,该扩展不仅可以构建和调试代码,还可以提供Intellisense(即可识别代码的complet)。离子和类似的细节。

此补丁添加了一个脚本,该脚本有助于设置环境以使其与VS Code一起有效:只需运行Unix shell脚本contrib/vscode/init.sh,即可创建相关文件并打开顶层​​文件。 VS Code中Git的源代码文件夹。


#7 楼

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

评论


我不同意你的严格立场。正如@BenjaminPasero的回答中所提到的,您不必这样做,但是在许多情况下,例如,共享任务配置。当然,注意一个队友是很好的,不要不必要地强加他们的偏好。

–罗纳德·扎里兹(RonaldZarīts)
17年9月5日14:44

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

–马特·比纳(Matt Bierner)
17年9月5日在18:20

@RonaldZarīts.vscodefolder与您自己的编辑器的设置和代码样式有关,我认为这只是供自己使用,因此正如我之前所说,请勿将文件夹推送到git控制流程。

–王佳琳
17年9月7日在9:28

@jialinwang对不起,我已经做到了。除了笑话,它还包含一些有用的共享项,例如,在我的项目中,我们有(1)launch.json-用于调试的启动配置,可以不费吹灰之力地进行设置。 (2)settings.json项目级设置,例如要使用的TypeScript编译器,空格规则,(3)task.json-构建命令。您可以选择不共享,但是我们发现它很有用。

–罗纳德·扎里兹(RonaldZarīts)
17年9月13日在10:04

@jialinwang不,不是。它们是文件夹级别的设置。您不仅应包括顶级文件夹,而且还具有子文件夹专用的任何设置,还应包括这些设置。重要的是将用户首选项设置在文件夹级别的设置之外(这也很重要,因为其他原因)。您应该在文件夹级设置中使用的这类内容应适用于整个文件夹:格式化程序,短绒棉纸,空白约定(例如,修剪最后的尾随新行,制表符大小...)...

– DylanYoung
20-2-11在19:37



#8 楼

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

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