Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用';git工作树&x27;_Git_Github_Linux Mint - Fatal编程技术网

使用';git工作树&x27;

使用';git工作树&x27;,git,github,linux-mint,Git,Github,Linux Mint,作为git的新手,我试图了解如何为一个github项目的不同分支使用多个工作目录。 特别是我想/需要在两个分支上工作——一个是“主”分支,另一个是维护版本,比如维护/项目1。 计划是在Linux/Mint 17.2下运行这项工作。 此外,我还想利用2.5中引入的最新git worktree特性 假设我有一个github帐户,从主项目中派生出我自己的fork,并在~/user/myproject中将该fork克隆到我的本地机器上 就目前情况而言,我不希望通过git push提供代码,我的工作和测试

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

假设我有一个github帐户,从主项目中派生出我自己的fork,并在~/user/myproject中将该fork克隆到我的本地机器上

就目前情况而言,我不希望通过git push提供代码,我的工作和测试的所有结果都将通过电子邮件传递给其他人,以便进行可能的修复-通过git这样做可能会很好,但无需开始

我认为我需要一组相应的git命令来执行以下步骤:

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

  • git克隆

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

  • cd项目;git工作树添加../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”之后科托里,它告诉我: