使用';git工作树&x27;
作为git的新手,我试图了解如何为一个github项目的不同分支使用多个工作目录。 特别是我想/需要在两个分支上工作——一个是“主”分支,另一个是维护版本,比如维护/项目1。 计划是在Linux/Mint 17.2下运行这项工作。 此外,我还想利用2.5中引入的最新git worktree特性 假设我有一个github帐户,从主项目中派生出我自己的fork,并在~/user/myproject中将该fork克隆到我的本地机器上 就目前情况而言,我不希望通过git push提供代码,我的工作和测试的所有结果都将通过电子邮件传递给其他人,以便进行可能的修复-通过git这样做可能会很好,但无需开始 我认为我需要一组相应的git命令来执行以下步骤:使用';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提供代码,我的工作和测试
- 创建两个工作树
- 在这些树之间切换
- 使两棵树与上游主机保持同步
- 以这种方式工作的任何其他注意事项/特殊注意事项
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”之后科托里,它告诉我: