我应该提交.vscode文件夹源代码控制



是否将.vscode文件夹提交到源代码管理?

在一个新的项目中,文件夹是空的,除了settings.json文件。什么样的东西会放进这个文件夹?它是机器特定的,开发人员特定的,如.vs文件夹,因此不提交?或者所有开发人员都应该共享这个文件夹,从而提交它?

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

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

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

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

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

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

建议一般排除.vscode文件夹,但保留允许其他开发人员接收共享设置的JSON文件。如果包含,这些设置将在文件夹级别强制执行(每当签出提交时设置)。

包括的设置示例:

  • 运行测试套件的特定于语言的测试配置(settings.json)
  • 编译器和代码格式化工具的扩展设置,以强制执行此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

在上面的.gitignore文件中,.vscode/*行(注意:关于是否应该包括*的一些争论-见注释;.vscode/**/*也可以忽略嵌套文件夹)说要排除.vscode文件夹中的所有内容,但随后!.vscode/a_specific_file行告诉git要"忽略该文件夹中的某些特定文件(settings.json, launch.json等)。最终的结果是,除了在其他行中特别命名的文件外,所有内容都被排除在.vscode文件夹中。


<标题> 其他因素

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

然而,如果这些文件包含需要特定环境的通用设置,比如repo安装的绝对路径,那么它可能会给其他使用VS Code的人带来问题,或者一些设置可能无法正确加载。关键是要避免保存本地环境自定义的设置,只共享那些可以(或者,在这个repo的情况下,应该)被每个人使用的设置。

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


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

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

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

所以,你通常应该把你个人电脑的自定义设置放在用户设置中,把通用设置放在工作区文件夹设置中。

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

例如,你可以添加settings.json.gitignore,并提交settings.json.default,很像.env文件的常见做法(在我的团队中)。

我把这个建议从视频提交编辑器设置到版本控制?

  • 从不提交.vscode/settings.json——除了search.exclude这个奇怪的例外。如果你真的需要,要非常小心,只把你的项目的特定设置,你想强制给其他开发人员。
  • 验证,格式化,编译使用其他文件,如package.json, .eslint, tsconfig.json
  • 唯一有意义的。vscode包含复杂的启动配置调试。
  • 小心,你的系统中可能有第三方扩展,可以把私人信息放在那里!

你不能做的是复制&粘贴整个设置。将内容文件拷贝到.vscode/settings.json。我看到有些人这样做,提交文件是一种暴行。在这种情况下,你不仅会破坏别人的工作空间,更糟糕的是,你会强迫用户设置你不喜欢的美学、UI和体验。你可能会破坏它们的环境,因为有些非常依赖系统。想象一下,我有视力问题,所以我的editor.*用户设置是个性化的,当我打开你的项目时,视觉效果会改变…

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

为什么不只关注实践,而不是这里的参数呢?

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

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

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

和其他答案一样:没有

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

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

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

contrib:添加一个脚本来初始化VS Code配置

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

这个补丁增加了一个脚本,帮助设置环境,以有效地使用VS Code: 只需运行Unix shell脚本contrib/vscode/init.sh,它会创建相关文件,并在VS Code中打开Git源代码的顶层文件夹。

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

.vscode/

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

git add -f .vscode/launch.json

-f添加文件,即使它们被忽略。一旦Git看到对.vscode/launch.json的修改,就会提示你像提交其他文件一样提交它们。

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

答案是"NO",因为。vscode文件夹是这个编辑器的,你不应该把这些个人设置推到repo,以免混淆别人,所以你可以把它添加到你的项目的

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

创建工作区时,需要保存一个文件code-workspace。此文件包含自定义设置,只需将此文件从git存储库中保存,就可以自由地将.vscode添加到.gitignore文件中。

最新更新