如何在VS Code中管理多个Git仓库

19

我需要处理这样的目录:

ProjectRoot
|---- SubDirectory1
|---- SubDirectory2(Git Repository1)
|---- SubDirectory3(Git Repository2)
|---- ...
|---- Files

但是我发现VS-code的嵌入式git功能不能自动识别那些由git管理的子目录。

如何解决这个问题?有相关扩展吗?


这是一个开放问题 https://github.com/Microsoft/vscode/issues/7829 - hjpotter92
@brand-shaw,ProjectRoot是一个普通的目录,还是一个Git仓库? - wgj
@wgj 这是一个普通的目录。项目的不同部分有它们自己的 git 仓库。如果 VS Code 可以打开多个文件夹并且可以在不同的文件夹中搜索符号,那么事情将变得容易。 - Brand Shaw
6个回答

16

你可以使用多根工作区。不要打开项目的根目录,而是打开第一个单独的git repo,然后使用文件->添加文件夹到工作区添加其他repo。一旦全部添加完毕,可以使用文件->另存为工作区来保存新的工作区配置。


11
截至VS Code 1.20版本(2018年1月),VS Code具有设置git.autoRepositoryDetection,允许VS Code自动检测git存储库。截至本回答(2022年),有效的设置为:
  1. true
  2. false
  3. "subFolders"
  4. "openEditors"
默认值为true,它将在上面的文件夹和子文件夹中查找git存储库。 "subFolders"设置仅限于在子文件夹中搜索。而"openEditors"设置将限制搜索任何打开的VS Code编辑器中的存储库。
考虑到这些选项,我建议在根工作区的settings.json文件中添加一个条目。该文件位于<workspace_root>/.vscode/settings.json,您可以添加"git.autoRepositoryDetection": "subFolders"。您还可以使用"Workspace"设置集进行此操作,或通过从"File -> Preferences -> Settings"打开设置编辑器并搜索"git.autoRepositoryDetection"设置,然后选择是否要为所有VS Code工作区或仅为您正在工作的工作区设置它,通过顶部的"User"和"Workspace"选项卡。(见图片) 设置Workspace的git.autoRepositoryDetection

我正在寻找一个按钮或命令来“添加”/“打开”/“检测”/“跟踪”多个代码库……VSCode应该让这更加明显! - Arthur Yip
看起来就是这个答案。唯一的问题是,即使在手动添加了带有git项目的子文件夹后,我仍然没有在git浏览器中看到任何git仓库。 - Victor Sergienko
相同的问题,即使 git.autoRepositoryDetection = truegit.repositoryScanMaxDepth 设置得比我需要的更深,仍然只有 9 个 repos 中的 3 个在源代码控制面板中显示。 - Rachel
我在将 git.autoRepositoryDetection 设置为 subFolders,并将 git.repositoryScanMaxDepth 设置为 -1 后,成功地重新启动了 VS Code。同时,将 gitlens.advanced.repositorySearchDepth 也设置为相同的值似乎也是一个不错的选择。 - theSparky
gitlens不是一个开箱即用的东西,所以我在回复中忽略了它。从那个设置来看,它似乎会自行处理与代码库的工作。 - undefined

7

版本1.72(2022年9月)在发布说明中提到:

源代码控制

发现嵌套的Git存储库

为了解决长期以来的功能请求,本次里程碑我们对存储库发现进行了更改,以支持嵌套的Git存储库。根据嵌套存储库的位置,您可能需要修改git.repositoryScanMaxDepth设置(默认值为1级)。


3

我有一个类似的问题:

- root project (git repo)
  |- subproject 1 (git repo)
  |- subproject 2 (git repo)

我希望在VSCode中处理所有三个仓库。
打开子项目1,然后“添加子文件夹到工作区”,选择子项目2,然后再次“添加子文件夹到工作区”,选择根项目
完成:现在您可以在一个工作区中管理所有三个仓库。

3

如wgj所说,VScode默认假定GIT仓库与工作空间根目录在同一级别。尽管当前没有办法改变这种情况,但一个潜在有用的解决方法是使用项目管理扩展,该扩展可轻松打开不同git仓库的VScode窗口,并通过几个按键来在它们之间切换。它也是Don Jayamanne的Git扩展包的一部分。


2
假设ProjectRoot不是一个git仓库(如果是,请遵循@hjpotter92评论中的问题,并暂时使用普通的git命令)...
VS Code期望您的git仓库(具有.git文件夹的目录)成为您的“ProjectRoot”。这意味着像“SubDirectory1”和“SubDirectory2”这样的目录,虽然在同一父级目录下,但实际上并不属于同一个项目,并且不会一起被积极地处理。

感谢回答。我现在使用 Git Bash,但如果 VS Code 可以自动检测每个目录中的 .git 文件夹会更好。 - Brand Shaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接