如何使用 TFS Git 为单独的分支创建单独的工作目录?

How to make separate working directories for separate branches using TFS Git?

我在 TFS 管理的 Git 存储库中有 (2) 个单独的分支,我在 VS.NET 2013 中使用它们有很大的不同(即解决方案和项目结构是在主要升级过程中有所不同)。我注意到,如果我打开 Windows 资源管理器并 在存储库之间切换 ,工作目录会自动更新并使用新文件进行重组。

这很好,因为 Git 会无缝地将我选择的活动分支的所有当前文件带入工作目录。然而,我真正需要的是 separate 工作目录,这样我就可以同时看到两个分支的所有项目文件。这与使用每次更改分支时基本上被覆盖的相同目录相反。

我查看了 IDE 中可用的每个 'right-click' 或 'settings' 选项,但似乎找不到为每个分支分配单独目录的方法。如何使用 VS.NET 2013 将不同的工作目录分配给 separate Git 个分支?

你不能。与 TFVC(其中分支存在于存储库的路径 space 中)不同,在 Git 中,分支存在于存储库级别。

您应该将存储库第二次克隆到第二个位置,并且您可以将每个本地存储库签出到不同的分支。

只要您不打算提交,就可以签出到不同目录的提交。 (你也可以提交,但这会让事情变得非常混乱,所以不要那样做。)

git checkout <branch-1>
cd <path/to/other/dir>
git --git-dir=<path/to/repository/.git>  checkout <branch-1>
cd <path/to/repository>
git c
git checkout <branch-2>

签出命令更改实际存储库中的分支,因此必须在签出存储库分支之前执行。

编辑:更好的选择

 git checkout <branch-1>
 git --work-tree=../test2 co HEAD
 git checkout <branch-2>

这更好,因为

  • 步骤少了很多
  • 它更安全,因为您不会将不同的提交检出到另一个目录

第二次签出到备用目录时可能仍然存在问题。您可以将其删除并重新开始,因为您将其用作仅供查看。

从 git 版本 2.6.0 开始,您可以使用 git worktree 命令创建一个单独的工作树以并行工作。

git checkout branch1
// working on branch1
git worktreee add ../branch2-workspace branch2
cd ../branch2-workspace
//working on branch2

完成文件夹后,将其删除,然后运行 git worktree prune