是否可以在同一项目中同时查看多个git分支?


72

我有2个分支,尚未准备好进行合并,但是有一些互补的逻辑,我想复习一下(合并之前)

我可以签出同一项目的多个git分支吗?可能吗?


1
您将可以使用Git 2.5+及其新git checkout --to=<path>命令来执行此操作。请参阅下面的答案
VonC

实际语法为git worktree add <path>。我在下面更新了我的答案
VonC

Answers:


68

您可以简单地将存储库复制到新位置(通过字面复制目录或使用git clone --shared),然后在每个位置签出一个分支。

您还可以git-worktree用于从存储库的单个实例创建多个工作目录。

否则,在合并分支之前比较文件的主要方法是git diff


12

使用Git 2.5+(Q2 2015),一个Git回购将支持多个工作树git worktree add <path>(这将取代contrib/workdir/git-new-workdir

这些“链接的”工作树实际上记录在主repo new$GIT_DIR/worktrees文件夹中(以便可以在包括Windows在内的任何OS上工作)。

在“使用Git的多个工作目录? ”中查看更多内容。


请注意,与git-new-workdir不同,git worktree不允许您为同一分支创建多个工作树:/
NikiC

2
@NikiC您可以根据文档添加--force标志(-f也可以使用)
Louis CAD

2

是的,有可能经过适当的照顾。但是,您使用options从常规git目录中“移走”了其中一个副本--work-tree=<path>,因此,除非您特别告知,否则git不会看到其中的更改。我在这里给出了一个单操作分支与git的示例-请参见UPDATED段。

请注意,该git-new-workdir功能在Windows XP上不起作用,因为它需要Unix样式的链接。


1

我想到的第一件事是检出单独项目中的每个分支。因此:1.在主要克隆(1)上检出分支A。2.创建一个新克隆(2)。3.在克隆2中检出分支B。

第二种方法可能是创建一个新分支(又名C)并将分支A和B合并到该分支。如果他们免费,那么这可能对您的审核有所帮助。


我已经尝试过这样做,但是当我在一个intellij中的一个仓库中检出分支时,另一个具有克隆的intellij也受到影响。对此有任何想法吗?
撕裂


-1

如前所述,您可以使用git diff来比较分支:

git diff [--options] <commit> [--] [<path>…]

This form is to view the changes you have in your working tree relative to the named <commit>. You can use HEAD to compare it with the latest commit, or a branch name to compare with the tip of a different branch.

上面的摘录来自Git文档。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.