假设我是在一个庞大的代码项目中使用 git 的众多开发人员之一,该项目的编译时间非常长。
现在,我个人的日常更改通常是有限的,并且代码库是相当模块化的,这意味着就我个人的工作而言,从头开始编译是只需支付一次的代价。之后,我只能重新编译我修改过的模块。
另一方面,我经常不得不修复(至少两个)分支中的错误,这些错误反映了与我工作的分支完全不同的代码库状态。这两个分支确实是整个开发团队的工作成果,并且经常重写或添加整个模块。在推送错误修复之前编译所有内容是强制性的。
我的第一种方法是每次需要修复错误时从我的开发分支切换,然后清理,修复错误,从头开始重新编译,推送,切换回原始分支,再次清理,重新编译 -这样做的延迟是无法容忍的。
然后我开始在我的机器上保留三个单独的代码库签出。这解决了“昂贵的重新编译”问题(我在每个分支中的更改都是增量的),但它提出了一个问题“我现在在开发什么?” 回答起来更复杂(因为它取决于当前目录),并且它使这三个副本的同步变得复杂(它将我必须执行的所有例程 // 命令乘以三push
)remote update
。pull
一个更简单的解决方案是能够在每次结帐“离开”分支时保存目录的状态(未跟踪,我在其中生成编译文件),并每次调用该目录的状态(如果存在)我“进入”(结帐)一个分支。
- 是否有 git 命令可以帮助我实现这种行为?
- 如果没有,是否有工具可以让我这样做?
- 如果没有,git 是否提供结帐钩子可以帮助我编写此行为的脚本?