git - Merging branch back with clean history -
i working on branch (with others) off of master.
a - b - c - f - g (master) \ d - e (branch-a) periodically, merge master branch, minimize conflicts later.
a - b - c - f - g (master) \ \ d - e - h (branch-a) eventually, want merge back.
a - b - c - f - g - - k - m - n (master) \ \ \ / d - e - h - j - l - o (branch-a) what cleanest way can merge master?
- i want preserve individual commits (i.e. no squash)
- i not use
branch-alonger, commits hashes can change. - i not include merge commits (e.g.
h,l) merges without conflicts, if possible.
ideally, (assuming there no conflicts):
a - b - c - f - g - - k - m - n (master) \ / d - e - j - o any ideas on how should done?
(fyi, question workflow. if should have done else earlier, legitimate answer too.)
update:
after thinking more, realized not possible.
for example, if j changed line g changed, there not way history.
the next best choice have history:
a - b - c - f - g - - k - m - d - e - j - o (master) essentially, rebase, omitting unnecessary merge commits.
you can hand branching off e , cherry-picking other commits new branch, merging master. rebasing possible, i.e. do
git rebase c on branch-a. however, take commits master , put them on feature branch.
git rebase -i c has same effect, allows skip commits no master , not required on branch-a. git cannot in general know whether commits interact in way (e.g. change 1 file might require change different file done on master), there's no fail-safe, automatic solution problem.
Comments
Post a Comment