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

Ron*_*īts 231 visual-studio-code

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

在新项目中,文件夹为空,settings.json文件除外.什么样的东西会进入这个文件夹?它是特定于机器的,特定于开发人员的.vs文件夹,因此不会被提交吗?或者应该所有开发人员共享此文件夹,因此应该提交?

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

// Place your settings in this file to overwrite default and user settings.
{
}
Run Code Online (Sandbox Code Playgroud)

这似乎暗示该文件夹应包含项目特定的设置,因此包含在源中.此外,这篇关于UserVoice的帖子似乎意味着某些类型会出现在那里,也暗示它应该被提交.

Ben*_*ero 254

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

顺便说一下,您不需要.vscode在项目中设置文件夹进行设置.您还可以在用户级别配置设置.

  • 如果你想共享文件级设置,比如"whitespace vs. tabs",那么你应该看一下像[EditorConfig](http://editorconfig.org/)这样的跨编辑器解决方案. (77认同)
  • 谢谢!"我们在VS Code团队......"对我来说已经足够了 - 至少可以开始! (35认同)
  • 所以,这个流行的答案似乎是错误的/不完整的。 (10认同)
  • 你不能将VSCode用于类似python项目的东西,其中工作区设置将具有针对VirtualEnv或Anaconda环境之类的环境特定的python路径.在大多数情况下,检查这些文件听起来像一个大问题.检入示例/默认文件. (8认同)
  • 这不会限制开发人员对 IDE 的选择吗? (4认同)
  • 跟踪`symbols.json`:/sf/ask/3631373861/ (3认同)
  • 此目录的子目录"chrome"为80 MB大小.您确定应该将其提交到存储库吗? (2认同)
  • 我想检查一些设置,例如“files.exclude”,但不检查其他设置,例如“python.pythonPath”。因为后者取决于机器。有没有办法检查每个项目的某些设置?相同的代码不同的用户、不同的机器和不同的操作系统 (2认同)

Lig*_*tCC 101

总结其他答案

建议通常排除.vscode文件夹,但保留允许其他开发人员重新创建共享设置的选择 JSON 文件。

设置示例包括:

  • 用于运行测试套件的语言特定测试配置 ( settings.json)
  • 用于执行此 repo 中使用的语言规则的 linter 和代码格式化工具的扩展设置 ( 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/*      # Maybe .vscode/**/* instead - see comments
!.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
Run Code Online (Sandbox Code Playgroud)

在上面的.gitignore文件中,该.vscode/*行(注意:关于是否*应该包含的一些争论- 请参阅注释;.vscode/**/*忽略嵌套文件夹可能更好)说要排除.vscode文件夹中的所有内容,但是这些!.vscode/a_specific_file行告诉 git “不”忽略该文件夹(在某些特定的文件settings.jsonlaunch.json等)。最终结果是.vscode文件夹中的所有内容都被排除在外,除了在其他行之一中专门命名的文件。


其他因素

.vscode在您的存储库中包含该文件夹实际上并不会伤害使用不同 IDE(或文本/代码编辑器)的任何人。

但是,如果这些文件包含需要特定于您的环境的通用设置(例如安装 repo 的绝对路径),则可能会导致其他使用 VS Code 的人出现问题,或者某些设置可能无法正确加载。关键是为避免保存本地环境自定义的设置,只共享每个人都可以使用的设置。

例如,如果 IDE 设置文件具有到 repo 或任何文件/库等的绝对路径,那就不好了,不要共享。但是如果所有引用都是相对的,那么它们应该适用于使用 repo 的任何人(尽管要小心 Windows/Unix 之间的路径规范差异......)。


关于用户、工作区和文件夹设置

注意:.vscode当您更改设置的文件夹版本时,文件夹中的设置文件通常会更新- 但这似乎取决于单个扩展的编码方式,因为我遇到了此规则的多个例外情况。

  • 如果您更改用户设置,它们通常存储在其他地方(位置取决于操作系统设置,通常在主目录中)。
  • 如果您对工作区设置进行更改,它们通常存储在*.code-workspace您当前使用的文件中。如果您没有工作区(您直接打开了一个文件夹),那么他们可能会转到该.vscode文件夹,但总的来说,这可能取决于拥有该设置的扩展程序。

因此,您通常应该将个人 PC 的自定义设置放入用户设置中,并将通用设置放入工作区或文件夹设置中。

  • 例外示例:Python 扩展更新.vscode/settings.json为在pythonpath设置下具有当前文件夹的绝对路径,这使其特定于当前 PC。

  • 更好的做法: !.vscode/settings.json.default 然后 mv settings.json 到 settings.json.default (4认同)
  • `.vscode/*` 对我不起作用,已调整为 `.vscode/` (4认同)
  • 更改为“.vscode/”通常会破坏重新包含的文件 -“.vscode/*”将忽略所有文件(但不是子文件夹)。`.vscode/` 将忽略整个文件夹,这也意味着 git 将忽略重新包含的内容。或者如文档所述:_如果排除该文件的父目录,则无法重新包含该文件。_ (4认同)

Tym*_*mek 28

在commit/ignore之间有第三个聪明的选项:commit with .defaultsuffix.

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

我从视频提交编辑器设置到版本控制的建议?作者:Mattias Petter Johansson

  • @jamescampbell 添加特定于 IDE 的文件几乎不会强制任何人使用该 IDE - 它只是让他们可以选择获取您的公共环境设置(如果他们碰巧使用该 IDE)。更大的问题是这些文件是否得到官方支持——即始终保持最新且有效。理论上,您可以为不同的 IDE 提供多个 IDE 环境文件,而不会出现任何冲突。 (8认同)
  • `settings.json.default`是有道理的,但这是假设你的整个团队正在使用vs代码而你的代码库没有被更广泛的受众共享.我发现我在GitHub上的开源项目,我只是确保将它添加到我的默认gitignore,因为我不想强迫我的代码库的潜在用户使用特定的IDE. (4认同)
  • @SentientFlesh 我不同意这是“不好的做法”。这更像是给定团队或项目需要决定的约定。根据我之前的评论,有什么害处?此外,更多的是关于工具集是否得到核心开发团队/维护者的“官方支持”。 (3认同)

Bum*_*Kim 18

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

.vscode到目前为止,我发现的最大的项目之一是Mozilla Firefox。看起来 Firefox 团队分享了他们的共同任务和推荐的扩展。

所以我想保留 不是一个坏主意.vscode,只要你知道你在做什么。

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

  • @NaserMirzaei 是的,我并没有说我们应该采用它。但许多随机的人在这里说“不”,而在某些组织中却没有这样做。那么这是一个很好的信号,表明他们可能在争论中遗漏了一些东西。 (5认同)

can*_*ero 17

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

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

如果你是认真的不承诺.vscode/settings.json.通常,对于特定项目(如验证,编译)有用的设置是有意义的,但通常您可以使用特定的工具配置文件,如.eslint,tsconfig.json,.gitignore,package.json.我想vscode作者刚刚添加了文件以简化新手的体验,但如果你想要认真的话不要!

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

  • 同样,如果您在使用 vscode 的团队工作,或者您正在从事许多开发人员使用 vscode 的项目,那么检查 `.vscode/settings` 是有意义的。并非所有这些设置都具有跨编辑器等效项 (4认同)
  • 我觉得您对.vscode / settings的建议过于严格。如果可以,请使用.eslint或.editorconfig文件,但如果您确实希望在团队/项目中的所有开发人员之间共享设置,则仍应签入.vscode / settings文件。 (3认同)
  • 马特,为什么您要假设所有其他开发人员都使用vscode?可能是使用webstorm,vim,sublime的人,这就是为什么您应该使用eslint等而不是settings.json的原因。 (2认同)

小智 10

.vscode/好吧,这可能看起来很晚了,但是如果您发现在不包含任何子文件的情况下很难忽略,您可以忽略该目录:

.vscode/
Run Code Online (Sandbox Code Playgroud)

然后手动跟踪你想要的文件:

git add -f .vscode/launch.json
Run Code Online (Sandbox Code Playgroud)

-f即使文件被忽略,也会添加文件。一旦 Git 看到更改,系统.vscode/launch.json将提示您像任何其他文件一样提交它们。

这实际上对我有用,导致我遇到同样的问题,试图忽略路径.vscode/,而不包含子文件settings.json


Von*_*onC 6

与其他答案相同:否。

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

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

请参阅Johannes Schindelin()的提交12861e2提交2a2cdd0提交5482f41提交f2a3b68提交0f47f78提交b4d991d提交58930fd提交dee3382提交54c06c6(2018年7月30日(通过合并JUNIOÇ滨野- -提交30cf191 8月15日2018)dscho
gitster

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

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

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


小智 5

答案是"NO",因为.vscode文件夹用于此编辑器,并且您不应该将这些个人设置推送到repo以防其他人混淆,因此您可以将其添加到项目的.gitignore文件中以忽略更改

  • 我不同意你的严厉立场.正如@BenjaminPasero在答案中所提到的,您没有必要,但在许多情况下它是有意义的,例如共享任务配置.当然,要注意一个队友而不是不必要地对他们施加偏好是很好的. (13认同)
  • @jialinwang对不起,我已经做过了.;)除了笑话,它还包含有用的项目,例如在我的项目中我们有(1)`launch.json` - 启动调试配置,这可能是非常重要的设置.(2)`settings.json`项目级别设置,如要使用的TypeScript编译器,空格规则,(3)`tasks.json` - 构建命令.您可以选择不共享,但我们发现它很有用. (4认同)
  • 是的,这就是为什么我们有单独的用户设置和工作区设置(工作区中的“.vscode/settings.json”文件):https://code.visualstudio.com/docs/getstarted/settings#_creating-user-and -workspace-settings 只有工具配置等内容才会进入工作区设置 (2认同)