我在一个大型 Scala 项目中工作,我们使用 Git 进行版本控制。我的工作流程是在我自己的分支中处理新功能并在需要时进行切换。代码的各种版本都在它们自己的分支中。都非常标准。
如果我必须修复某个版本的代码中的错误,我将切换到正确的分支,修复错误,提交,然后切换回原来的位置。
问题是,虽然 git 一旦我到了那里就可以立即切换到另一个分支,但我必须重新编译代码。这需要几分钟。然后修复错误,切换回我自己的分支并再次重新编译,这需要几分钟。它似乎违背了 Git 如此之快的目的。
有人遇到过这种情况么?有没有办法绕过它。我确定这不是 Scala 特有的问题(尽管 Scala 的编译速度非常慢)。
3年后更新
过去几年我一直在使用@djs 答案(git-new-workdir)。这对我来说效果很好。我有一个主目录和几个其他目录(如生产、下一个版本等),当我需要在那里工作时我会切换到这些目录。开销很小,这意味着您可以快速切换到生产,测试某些东西,然后切换回您正在处理的内容。
7年后更新
看起来git-worktree是 git-new-workdir 的替代品。要使用:
cd ~/git/my-repo
git worktree add ~/git/my-linked-repo