【问题标题】:git: copy a worktree of a remote branch that is not present at localgit:复制本地不存在的远程分支的工作树
【发布时间】:2017-12-28 14:09:16
【问题描述】:

在工作中,我有一个项目,它有两个不同的版本,具有一些共同的基本功能。我利用git worktree 将这些版本放在单独的文件夹中,每个版本在master 旁边都有两个长期运行的分支,master 用于通用功能。因此,一个存储库有 3 个文件夹。此外,还有一个远程存储库,所有东西都被推送到那里。

$git branch -a
*master
 version-1
 version-2
 remote/origin/master
 remote/origin/version-1
 remote/origin/version-2

在家用电脑上,我有master 的文件夹,这个本地存储库与我的工作存储库链接到同一个远程。当我得到分支列表时,它就像:

$git branch -a
*master
 remote/origin/master
 remote/origin/version-1
 remote/origin/version-2

我想将checkout 复制到version-1,并将版本-a 的全部内容复制到本地文件夹,该文件夹由git 跟踪为worktree,就像在我的工作中一样。 git clonegit checkout 会这样做还是我需要做一些更棘手的事情?

【问题讨论】:

  • 按版本,我指的是针对不同客户的不同功能,而不是版本本身!
  • 看了你的描述后我很困惑,因为你可以在家里做同样的事情。您可以在您的家庭 PC 的存储库中从远程分支创建另一个本地分支,然后使用 git-worktree 将其检出到另一个本地文件夹中。
  • 我认为你误解了 git worktrees。它们从来都不是真正的“必需品”,它们真的可以让一些事情变得更快或更节省空间。只需从常规的git clone 开始,一旦你弄清楚了,你就可以研究如何用基于另一个克隆的工作树替换一个克隆。
  • @ElpieKay 澄清一下,我有一台电脑在工作,另一台在家里。我在两个地方从事同一个项目。正如您所建议的,如果我从家里的远程分支创建另一个本地分支,它不会添加另一个不必要的分支吗?我想拥有我提到的旧 3 个分支。
  • @Mort worktree 帮助了我很多,分离文件夹和我的 IDE 不会混淆。再次,我在工作 PC 上有 3 个单独的文件夹,但在我的家用 PC 上只有 1 个主文件夹(因为我在添加这些 1 和 2 版本的东西之前在家工作了一段时间),现在我回去工作了在家里,需要更新我的工作文件夹,但我希望它被远程 git 分支跟踪。

标签: git git-branch git-clone git-checkout git-worktree


【解决方案1】:

最后,我使用它来拥有与我的工作和家中相同的工作树。

$ git worktree add --checkout ../version-1 version-1
$ git worktree add --checkout ../version-2 version-2

它检查我在不同文件夹(工作树)中长期运行的分支。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 2018-01-11
    • 2021-03-27
    • 2012-01-16
    • 2017-02-18
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多