【问题标题】:work flow for using git 2.5 for multiple work directories using 'git worktree'使用 'git worktree' 为多个工作目录使用 git 2.5 的工作流程
【发布时间】:2015-08-24 23:34:13
【问题描述】:

作为 git 的新手,我试图了解如何为一个 github 项目的不同分支使用多个工作目录。 特别是我想要/需要在两个分支上工作——一个是“主”,另一个是维护版本,比如维护/project1。 计划是在 Linux/Mint 17.2 下运行这项工作。 另外,我想利用 2.5 中引入的最新 git worktree 功能。

假设我有一个 github 帐户,我已经从主项目中分出了我自己的 fork,并将该 fork 克隆到我在 ~/user/myproject 中的本地计算机。

就目前情况而言,我不希望通过 git push 贡献代码,我的所有工作和测试结果都将通过电子邮件传递给其他人以进行可能的修复 - 通过 git 进行可能会很好路,但没有必要开始。

我认为需要一组相应的 git 命令的步骤是:

  • 创建两个工作树
  • 在这些树之间切换
  • 使两棵树与上游主节点保持同步
  • 以这种方式工作的任何其他注意事项/特殊注意事项。

【问题讨论】:

    标签: git github linux-mint


    【解决方案1】:

    创建两个工作树

    1. git 克隆https://github.com/someone/someproject.git

      (这将为您提供master 分支上的目录someproject

    2. cd someproject; git worktree add ../someproject-devel devel

      (这将为您提供devel 分支上的目录someproject-devel,假设存在这样的分支)

    在这些树之间切换

    只需使用cd 命令。

    使两棵树与上游主节点保持同步

    只需在适当的目录中cd 并运行git pull。首先在主工作树中执行此操作可能是最好的,但不是必需的(手册页没有专门解决这个问题,而且我没有详细研究工作树的实现。如果存在问题,它只会是最佳解决方案之一使用空间,而不是功能)。

    以这种方式工作的任何其他注意事项/特殊注意事项。

    来自手册页:

       Multiple checkout in general is still experimental, and the support for
       submodules is incomplete. It is NOT recommended to make multiple
       checkouts of a superproject.
    

    【讨论】:

    • 我需要为每个目录添加任何远程,还是只为主克隆目录添加一个?
    • 您的工作树与您的主存储库共享远程。您对主存储库中的遥控器所做的任何更改都将在所有工作树中可见。
    • 如果我在错误的目录中获取或拉取错误的上游数据,我该如何恢复? :-(
    • 你会怎么做?如果你只输入git pull,你永远不会不小心拉错东西。如果你这样做了,我想这就是 git reset 和你的 reflog 的用途。
    • 我觉得还是有点迷糊。为了安全起见,我重新启动了,但是在我创建了我的 'devel' 分支并在主目录中摩擦 'git status' 之后,它告诉我:
    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2017-06-09
    • 2014-09-11
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多