我是一些开源项目的贡献者,合并PRs需要一段时间。在任何时候,我可能有2-10个杰出的PRs。一些bug修复,一些增强,等等。当那些PRs在运行时,我想运行一个包含所有这些分支的软件的本地副本(称之为“我的叉子”)。有时,这意味着我正在创建与主分支不兼容的文件/数据库/etc。
现在,当我想创建一个新的分支时,我遇到了一个问题。如果我将它建立在main上,那么它就可以进行PR了,但是编译它需要花费更长的时间(因为我现有的对象文件来自于我的叉的最近一次编译,而且ccache缓存中充满了这些变化),生成的二进制文件将无法读取我用叉创建的文件。如果我把它建立在我的叉子上,那么我必须重新建立在主板上,然后我才能重新定位它。
我发现自己在跳一支舞,在每一次提交和每次推送之间来回调整一次。这会变得单调乏味,而且有点容易出错。如果我的一些分支是建立在彼此的基础上,或者我在树枝之间做任何樱桃采摘的话,那就更复杂了。
是否有管理这种情况的工具?我想要做的是进行代码更改,在新分支中提交该更改,然后将该更改编译为我的分支的一部分,重复几次,然后推动新分支创建或更新一个PR,所有这些都尽可能少地绕道到git分支管理。
简单地拥有两个工作目录(无论是我推拉的两个单独的本地repos,还是一个带有两个工作目录的本地回购)并不能解决这个问题。我仍然需要手动管理重基和合并,这是一个容易出错的过程,如果按这种情况所需的频率完成的话。
发布于 2022-10-09 22:41:26
不是一个明确的答案,因为我不认为git没有提供你想要的东西,而是一些你可以考虑的想法.
也许你可以使用'git工作树‘功能。
这个想法很简单:能够同时处理同一个存储库的不同分支(每个分支在不同的工作目录中签出)。特别是当从一种切换到另一种是昂贵的(例如,当签出、包的恢复、构建或更改特定的配置需要一些时间或痛苦/乏味时)
--如果我的一些分支是建立在彼此的基础上,或者我要在树枝之间采摘樱桃,那就更复杂了。
对于这个特定的问题,您可以查看真正新的–update-refs特性(在Git的最后2.38版本中提供),它允许您在进行重基的同时“重新设置依赖的分支”。https://github.blog/2022-10-03-highlights-from-git-2-38/#rebase-dependent-branches-with-update-refs
https://stackoverflow.com/questions/74008576
复制相似问题