Re:Extremely Linear Git History
by breatheoften on Tuesday November 22, 2022 @09:30AM
(#33706158)
I've wanted this for awhile as well. Squash only merges, which are enforceable in github, get you close but leave you without any automated way to determine if a given branch was ever merged to main or not ... it's pretty annoying that such a mainstream workflow has such an obvious yet non-resolvable flaw ...
merge is the only way to reliable determine if a branch is merged ¯ \ _ ( ツ ) _ / ¯
Yes, it is a shame that you can't combine git merge --ff-only --no-ff .
git rebase && git merge --no--ff
(a) Because rebase is run on the branch to be rebased, but merge is run on the branch being merged to, that reverses the parents of the merge commit and puts it on the rebased branch rather than the parent.
(b) Even if that were fixed, it alters the rebased branch, rather than stopping and warning in an unexpected case.
I really do want the natural semantics of merge --ff-only --no-ff.
you can do this
git rebase -r target source && git checkout target && git merge --no-ff target
since what your asking for is not a merge, you'd have glue it together by yourself. Perhaps, add it as a script
This way, you know which set of commits was in the branch by looking at the parent commits of the merge commit, but the merge commit itself did not involve any automated conflict resolution.