最近我似乎有这种重复的场景,有多个功能分支正在开发中,一个功能分支(下图中的feature-b
)依赖于另一个未完成的功能(已开发)的支持在 feature-a
中:
---o---o--o master
|
+---o---o---o feature-a
|
+----o---o feature-b
每当我修改 feature-a
(包括交互式 rebase 以修复功能中的错误)时,我需要将 feature-b
rebase 到 feature-a
。这些是本地分支,因此我可以随意修改它们。
我比较常遇到的情况是:
master testing
---o---o--o-------------------------------------------o---o
| feature-a . .
+---o---o---o . .
| feature-b . .
+----o---o ..................... .
| feature-c .
+----o---o .......................
其中测试分支是正在开发的所有(相关)功能的组合,通过 merge 其上的所有相关功能分支而产生(在图片中master
,feature-b
、feature-c
– 并暗示 feature-a
)。
目前,特别是如果有更复杂的功能分支关系,我有 gitk
不断打开以可视化分支关系,并维护 shell 脚本自动执行此 rebase ,但这种方法似乎脆弱且通用滋扰。我想知道的:
- 有没有一种方法可以描述甚至自动检测分支关系,然后用一个命令尝试重新加强所描述的关系(在上面的简单示例中,在通过 rebase 或向头部添加新提交来更改
feature-a
之后,在feature-a
的新头部上自动执行 rebasefeature-b
>). - 用于将一组分支 rebase 到其他提交的 GUI 工具(如果冲突会阻止操作,只需给出错误就可以了)?
- 管理这个困惑的分支机构的其他想法?涉及的意外复杂性成本太高 时间和消耗太多脑力。
最佳答案
I do not like pushing bad stuff for others to see, and I like to keep the final history look clean.
这是个坏习惯。您应该为“建议的更新”保留一个 master
和一个 pu
。将您的提交推送到 pu
,然后根据需要将 pu
rebase 到 master
。在适当的时候,您可以从 pu
中挑选,甚至可以将 pu
merge 到 master
中。
这就是 git repo 的处理方式本身。避免掉进无尽分支的“兔子洞”。
关于git - 管理相关的进行中的 git 功能分支/分支集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493071/