【问题标题】:Is it possible to view multiple git branches at the same time for the same project?是否可以同时查看同一个项目的多个 git 分支?
【发布时间】:2011-09-12 20:00:18
【问题描述】:

我有 2 个分支,尚未准备好合并,但有一些互补的逻辑,我想回顾一下(合并前)

我可以查看同一个项目的多个 git 分支吗?有可能吗?

【问题讨论】:

  • 您将能够使用 Git 2.5+ 及其新的 git checkout --to=<path> 命令执行此操作。见my answer below
  • 实际语法是git worktree add <path>。我已经更新了my answer below

标签: git branch git-checkout


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    使用 Git 2.5+(2015 年第二季度),Git 存储库将支持 多个工作树 使用 git worktree add <path>(这将取代 contrib/workdir/git-new-workdir

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

    在“Multiple working directories with Git?”查看更多信息

    【讨论】:

    • 请注意,与 git-new-workdir 不同,git worktree 不允许您为同一个分支创建多个工作树:/
    • @NikiC 你可以根据the doc添加--force标志(-f也可以)
    • 这里只是一点元信息:只有一个工作树有一个包含所有对象(blob、提交、树)的.git 目录。所有其他工作树都有一个 .git file ,其中包含以下内容:gitdir: /path/to/project/.git/worktrees/main(main 是我给我的工作树起的名字),即它指向你的基础工作树
    • @Honey True。我有documented here git worktree 如何提出一组命令来管理这些工作树(moveprunelist,...)–
    【解决方案3】:

    是的,在适当的照顾下是可能的。但是,您正在使用 --work-tree=<path> 选项从常规 git 目录中“带走”一份副本,因此除非您特别告知,否则 git 不会看到其中的更改。我在这里举了一个例子single-working-branch-with-git - 请参阅 UPDATED 部分。

    请注意,git-new-workdir 不适用于 Windows XP,因为它需要 Unix 样式的链接。

    【讨论】:

      【解决方案4】:

      我想到的第一件事是检查单独项目中的每个分支。 所以: 1. 在主克隆上签出分支 A (1) 2.创建一个新的克隆(2) 3. checkout branch B in clone 2

      第二种方法可能是创建一个新分支(又名 C)并将分支 A 和 B 合并到它。 如果它们是免费的,那么这可能有助于您的评论。

      【讨论】:

      • 我试过这样做,但是当我在我的 intellij 的一个 repo 中检查分支时,其他具有克隆的 intellij 也会受到影响。对此有什么想法吗?
      【解决方案5】:

      如前所述,您可以使用 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 文档。

      【讨论】:

        【解决方案6】:

        现在 git 包含命令 worktree 来执行此操作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-05
          • 2011-07-22
          • 1970-01-01
          • 1970-01-01
          • 2019-10-23
          • 2018-03-17
          • 1970-01-01
          相关资源
          最近更新 更多