我克隆了一个大的Git仓库(约3.7G),其中包含多个分支。其中一个分支负责设置Windows Installer(InnoSetup),因此在构建主程序后,我需要切换到Installer分支。
有没有可能在两个不同的目录中拥有单个仓库但是有两个独立的HEAD,这样就不必将仓库克隆两次了?
我克隆了一个大的Git仓库(约3.7G),其中包含多个分支。其中一个分支负责设置Windows Installer(InnoSetup),因此在构建主程序后,我需要切换到Installer分支。
有没有可能在两个不同的目录中拥有单个仓库但是有两个独立的HEAD,这样就不必将仓库克隆两次了?
git worktree
。该命令有一个子命令add
,可以在另一个目录中创建一个新的工作树。每个这样的工作树都有自己的HEAD
和索引(以及各种状态文件,例如与正在进行的git am
,git rebase
等相关的文件-基本上是所有由git status
报告的事情)。有关详细信息,请参见文档。请注意,即使在当前版本的Git(2.8.x)中,git worktree
仍然有些实验性。但它应该适用于此特定用例。
git worktree
功能,可以从单个仓库创建多个工作树。每个工作树都有自己的HEAD和索引。参见https://dev59.com/LlwZ5IYBdhLWcg3wBcaz(顺带一提,在Git中,HEAD是大写的 :-) ——当我读到你的问题时,我首先想到的是Mercurial的“heads”)。 - torek