在另一个VS Code窗口中切换到另一个git分支,同时保留另一个VS Code实例中主分支的更改。

4

我想在main分支和test分支之间匹配一些代码行,但是让每个分支都在自己的VS Code窗口中。当在不同的VS Code窗口上执行git switch test时,是否可以在main分支中保持其自己的VS Code窗口中的git更改?

我尝试了两个工作区,比如说workspace-main用于main分支,workspace-test用于test分支。因此,我成功地在同一个项目中拥有了两个VS Code窗口实例。然而,每当我在workspace-test分离的窗口上执行git switch test时,workspace-main窗口也会将其git分支更改为test

我还没有在互联网或这里看到任何示例。我想知道是否可能在单个VS Code窗口上切换分支。


然后你改变一个文件,它应该去哪个分支,始终只有一个由HEAD指向的分支/提交。 - rioV8
1
查看cherry-pick合并或交互式合并。 - rioV8
简短的回答是不行,除非你克隆了两个独立的Git存储库,这样你就可以将它们分别放在不同的分支上...但那太疯狂了 :) - topsail
我只是想知道那是否可能。现在,感谢您的启示。 - Ginoong. Flores
1
你无法这样做,因为Git switch会根据你的分支HEAD更改文件结构,那么任何VScode实例都将显示更改后的源文件。你可以尝试使用git diff main..test来查看差异。 - Vignesh
3
@topsail 这并不是疯狂的。Git有一个内置功能专门用于此,而无需“疯狂”。请查看我的回答。 - starball
1个回答

7
使用git的工作树功能。(链接到文档:https://git-scm.com/docs/git-worktree)。
工作树允许您拥有多个检出文件夹,每个文件夹可以是不同分支/提交的检出,但它们共享相同的.git/文件夹(例如,在一个工作树中进行的fetch将数据拉取到共享的.git/文件夹中,因此其他工作树不需要进行相同的fetch)。这允许您同时查看和编辑不同分支/提交的多个检出,并为每个检出拥有不同的工作树和暂存区。
然后只需将每个工作树切换到所需的分支/提交,并在不同的VS Code窗口中打开它们。
要创建新的工作树,请使用add <path> [<commit-ish>]。有关命令使用的更多信息,请参见文档。

感谢您的建议。我会尝试一下,并在尝试后将其标记为已解决。 - Ginoong. Flores
1
我尝试使用git worktree并且它起作用了。我成功地在两个VS Code窗口的同一项目上进行了不同的git更改。同时,通过删除该worktree,我还能够将另一个worktree中的分支合并到主分支上。虽然我仍然需要尝试不同的worktree命令来更好地掌握它。总的来说,这很容易解决了我的问题。标记为已解决@user - Ginoong. Flores

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