Git:用链接的工作树交换主工作树?

标签 git git-worktree

我试图找出是否有任何方法可以交换工作树。我的公司有很多假定特定目录结构的脚本,因此为了能够使用多个工作树,我需要"new"链接的工作树来代替主工作树。

我找到了 git worktree move <worktree> <new-path> 但这不允许移动“主要”工作树,因此没有交换的机会。

理想情况下,会有一个 git worktree swap <worktree> <path>在哪里:

  • 如果 <path>是一个工作树,它交换它们
  • 如果 <path>是一个 commit-ish,它添加了一个新的工作树 <worktree> 's name for the commit-ish,然后交换它们
  • 最佳答案

    简短的回答是否定的:主工作树与所有添加的工作树不同。

    请注意,您可以将 .git 分开使用 $GIT_DIR 来自任何工作树的目录和/或 $GIT_WORK_TREE环境变量,和/或 --git-dir和/或 --git-work-tree选项(它只是设置环境变量,然后继续,就好像最初设置了环境变量一样)。但总的来说,存储库的主要工作树是特殊的:它的 HEAD文件位于 .git/HEAD , 而不是 .git/worktrees/<name>/HEAD , 例如。

    (工作树 W 的每个工作树状态通常存储在 $GIT_DIR/worktrees/W 中。)

    关于Git:用链接的工作树交换主工作树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794908/

    相关文章:

    git - 计算特定用户在 Github 中所有项目中编写的总行数

    git - 关于 git-new-workdir 分支同步

    Git 从现有的远程分支添加一个工作树

    git - 为什么两个 git 工作树不能 checkout 同一个分支?

    git - 如何从 SourceTree 中的远程主机创建分支?

    asp.net - 持续集成基础设施的部署

    git checkout 用于开发/登台/生产的分支

    git - 放入目录(cd)和使用 `work-tree`参数之间的Git有什么区别?

    git - 如何 Git diff 两个分支但显示类似于 Git 提交的输出?

    git - 打断看似已挂断的 dcommit 调用是否安全?