.vscode文件夹是否要提交给源代码控制?

在新项目中,除了设置之外,文件夹为空。json文件。这个文件夹里会有什么东西?它是特定于机器的,特定于开发人员的,比如。vs文件夹,因此不能提交?或者所有开发人员都应该共享这个文件夹,从而提交它?

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

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

这似乎意味着文件夹应该包含特定于项目的设置,因此应该包含在源代码中。此外,UserVoice上的这篇文章似乎暗示了一些类型会在那里,也建议它应该被提交。


如果您想与团队共享设置、任务配置和调试配置,请检入.vscode文件夹。我认为如果你想在一个团队中强制设置,与团队共享设置(例如空格与选项卡)是有意义的。我们VS Code团队也共享调试和任务特定的设置,因为我们希望我们的团队对VS Code有相同的调试目标和任务目标。

顺便说一下,你不需要在你的项目中有一个.vscode文件夹进行设置。您也可以在用户级别上进行配置。


答案是“否”,因为.vscode文件夹是这个编辑器的,你不应该把这些个人设置推送到repo,以免让其他人感到困惑,所以你可以把它添加到项目的.gitignore文件中来忽略这些更改


never commit .vscode/settings.json - with the weird exception of search.exclude . If you really need to, be very careful of putting only settings particular of your project that you want to enforce to other developers. for validation, formatting, compilation use other files like package.json, .eslint, tsconfig.json, etc The only .vscode that makes sense to include are complex launch configs for debugging. Be careful, there could be a third party extension in your system that could put private information there !

What you can't do is copy & paste the whole settings.json contents file to .vscode/settings.json. I'm seeing some people doing this and committing the file is an atrocity. In that case you will not only break others workspace but worst, you will be enforcing settings to users that you shouldn't like aesthetics, UI, experience. You probably will break their environments because some are very system dependent. Imagine I have vision problems so my editor.* user settings are personalize and when I open your project the visuals change. Imagine I have vision problems s I need to personalize user editor.* settings to be able to work. I would be angry.

如果你是认真的,不要提交.vscode/settings.json。一般来说,对特定项目有用的设置,如验证、编译,是有意义的,但通常你可以使用特定的工具配置文件,如.eslint、tsconfig。Json,。gitignore, package。Json。等。我猜vscode作者只是添加了简化新人体验的文件,但如果你想认真的不要!

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


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

例如,您可以添加设置。Json到.gitignore,并提交settings.json.default,就像在我的团队中使用.env文件一样。

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


和其他答案一样:没有。

举例来说,考虑一下Git 2.19(2018年Q3)选择的方法,它添加了一个脚本(在contrib/中)来帮助VSCode的用户更好地使用Git代码库。

换句话说,生成.vscode内容(如果它还不存在),不要对其进行版本化。

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

contrib: add a script to initialize VS Code configuration VS Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. Among other languages, it has support for C/C++ via an extension, which offers to not only build and debug the code, but also Intellisense, i.e. code-aware completion and similar niceties. This patch adds a script that helps set up the environment to work effectively with VS Code: simply run the Unix shell script contrib/vscode/init.sh, which creates the relevant files, and open the top level folder of Git's source code in VS Code.


为什么不关注实践,而不是这里的争论呢?

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

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

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


在.vscode文件夹中提交一些文件

建议一般排除.vscode文件夹,但保留一些JSON文件,允许其他开发人员重新创建共享设置。

设置的示例包括:

特定于语言的测试配置来运行测试套件(settings.json) linters和代码格式化工具的扩展设置,以强制执行此repo中使用的语言规则(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

In the above .gitignore file, the .vscode/* line (note: some debate on whether the * should be included - see comments; .vscode/**/* may be better to ignore nested folders as well) says to exclude everything in the .vscode folder, but then the !.vscode/a_specific_file lines tell git to "not" ignore some specific files in that folder (settings.json, launch.json, etc.). The end result is that everything is excluded in the .vscode folder except for the files specifically named in one of those other lines.


其他因素

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

然而,对于其他人使用VS Code,这可能会导致问题,或者一些设置可能无法正常加载,如果这些文件包含通用设置,需要特定于您的环境-比如repo安装的绝对路径。关键是要避免保存适合您本地环境的自定义设置,只共享那些可以(或者,在这个回购的情况下,应该)供所有人使用的设置。

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


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

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

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

所以,一般来说,你应该把个人电脑的自定义设置放到用户设置中,把通用设置放到工作空间或文件夹设置中。


一个简单的方法来保持你的设置而不提交到你的项目git存储库是创建一个工作区,并添加文件夹。

当您创建一个工作空间时,您需要保存一个文件代码-工作空间。这个文件包含自定义设置,只需将这个文件从git存储库中保存出来,就可以将.vscode添加到.gitignore文件中。


好吧,这可能看起来很晚了,但如果你发现忽略.vscode/而不包括任何子文件很难,你可以忽略目录:

.vscode/

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

git add -f .vscode/launch.json

f在文件被忽略的情况下也会添加文件。一旦Git看到.vscode/launch的变化。Json,你会被提示像提交其他文件一样提交它们。

这实际上为我工作,因为我遇到了同样的问题,试图忽略.vscode/路径,不包括子文件settings.json