如何使用相同的 Git 项目和不同的分支打开2个 VisualStudio 实例

我需要打开2个 Visual Studio 实例: 一个只是查看项目 X/Branch 1的代码,另一个用于在项目 X/Branch 2中编写代码。

我怎样才能在提交时不丢失更改呢?

46203 次浏览

If you need to open the code in Visul Studio it is necessary to checkout the branch. As you can't checkout two different branches in the same directory at the same time, you can't avoid to checkout each branch in a separate directory.

但是您可以将一个目录的远程设置为另一个 git 目录,这样就可以在本地进行同步,而不需要任何外部设置。

假设您希望将这两个分支都作为根公共目录 ProjectX 的子目录:

cd ProjectX
git clone -b branch1 <remote repo of project X> directory_branch1
git clone -b branch2 directory_branch1 directory_branch2

2019年5月更新: 由于 Git Worktree 现在可以工作,并且受到基于 GUI 的工具的支持,所以这可能是目前使用的解决方案。

这里的问题与 Visual Studio 无关,而是 Git 是如何工作的。 当您在 git 中签出一个分支时,它会将该分支放入您的工作树或(文件结构,不管您希望如何称呼它)中。

使用 git,一次只能检出一个分支,但是等待 < strong > 有一个解决方案! 通过 利用 git worktree命令,可以在不同的目录中为同一存储库创建第二个工作树。然后,您可以在 Visual Studio 中打开该工作树,以检出两个不同的分支。

假设您有 C:\projects\the_project,并且希望在例如 C:\projects\the_project_2处创建一个新的工作树,打开 git bash,导航到项目的目录并运行

git worktree add ../the_project_2 <branch>

where is the branch you want checked out in the new work tree.

这将创建一个新的目录 "C:\projects\the_project_2"),并将分支签出到其中,而不必重新克隆存储库。

For more information see the Git 工作树文档.

注意: 早期版本的 Visual Studio 不知道如何处理额外的工作树,也不会将它们识别为 git 存储库。

如果您不关心源分支的 git 连接(只查看但不修改的那个) ,那么当该分支处于活动状态时,您总是可以创建包含解决方案的文件夹的副本。然后,一旦目标分支处于活动状态,就可以打开该分支的非源代码管理版本

"clone the repo twice to different directories" is the quickest easiest workflow as @ewan said in the comments.

我刚刚发现这是可能的,这里是我们可以做到这一点的方法-> 去命令调色板(shift + cmd + P)在 Mac 和输入 dupl 它会显示你的选项-在新窗口中复制工作区,所以点击它 来自 vscode 的截图