在一个git仓库中是否可以有多个HEAD?

6

我克隆了一个大的Git仓库(约3.7G),其中包含多个分支。其中一个分支负责设置Windows Installer(InnoSetup),因此在构建主程序后,我需要切换到Installer分支。

有没有可能在两个不同的目录中拥有单个仓库但是有两个独立的HEAD,这样就不必将仓库克隆两次了?


你的意思是什么?Head 是指分支,而不是仓库。 - DonCallisto
我不明白为什么你要把它放在一个代码库里。将其拆分成两个代码库。 - Xatenev
我完全意识到这个结构既不实用也不方便。我只是偶然遇到这种情况,并想知道是否可能有一种多头的解决方案。 - Thomas Raffelsieper
5
Git 2.5及以上版本拥有git worktree功能,可以从单个仓库创建多个工作树。每个工作树都有自己的HEAD和索引。参见https://dev59.com/LlwZ5IYBdhLWcg3wBcaz(顺带一提,在Git中,HEAD是大写的 :-) ——当我读到你的问题时,我首先想到的是Mercurial的“heads”)。 - torek
这正是我所想的。我会把它标记为正确答案,但这只是一条评论。 - Thomas Raffelsieper
@torek 请将其发布为答案。 - MicroVirus
1个回答

6
如果您的Git版本为2.5或更高版本,1则有一个新命令git worktree。该命令有一个子命令add,可以在另一个目录中创建一个新的工作树。每个这样的工作树都有自己的HEAD和索引(以及各种状态文件,例如与正在进行的git amgit rebase等相关的文件-基本上是所有由git status报告的事情)。有关详细信息,请参见文档。请注意,即使在当前版本的Git(2.8.x)中,git worktree仍然有些实验性。但它应该适用于此特定用例。
另请参见What would I use git-worktree for?
1我建议至少使用2.6版本,它修复了一些错误。请参见2.6.0版本说明中“worktree”的每个提及。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接