In recent times I seem to have this repeating scenario of having multiple feature branches under development, with one feature branch (feature-b in the below picture) depending on support of another incompleted feature (developed in feature-a):
---o---o--o master
|
+---o---o---o feature-a
|
+----o---o feature-b
Whenever I modify feature-a (including interactive rebasing to fix errors in the feature), I need to rebase feature-b onto feature-a. These are local branches, so I am free to modify them how ever I want.
More often I have the following kind of case:
master testing
---o---o--o-------------------------------------------o---o
| feature-a . .
+---o---o---o . .
| feature-b . .
+----o---o ..................... .
| feature-c .
+----o---o .......................
where testing branch is combination of all the (related) features under development, produced by merging all the relevant feature branches on it (in the picture master, feature-b, feature-c – and by implication feature-a).
Currently, especially if having more complicated feature branch relationships, I have gitk constantly open to visualize the branch relationships, and maintain shell scripts to do this rebasing automatically, but this method seems fragile and a general nuisance. What I would like to know:
- Is there a way of describing and even automatically detecting the branch relationships, and then with one command try to re-enforce