【发布时间】: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 clone 或 git 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