1

I am in the process of changing my git-merge-workflow and encountered following problem:

Up to now, i have been merging (--no-ff) my changes on the develop branch back to master whenever i released a new version. This generated a new merge-commit containing the history (--log) of all the develop-commits. I realized that this is sub-optimal, and want to actually do fast-forward merges from my develop branch to master (having changed my commit-messages on develop to reflect my changes in a "cleaner" way).

My current problem: The most recent commit on master is a still a merge-commit from the last time, due to that I can't do an ff-merge from develop to master now, since the 2 branches "diverged" (the merge-commit is missing on develop).

My idea to solve this would have been, being on develop: git rebase master, which would pull in this merge-commit, and then enable me to do a git merge develop on master. But would this generate a new commit on develop (this particular merge-commit) or will git be smart enough to recognize that the changes of this merge-commit are already part of develop?

2 Answers 2

1

git rebase master while on develop will work fine for your purposes.

If your branches are currently like this:

A-B-C-D-E <-- master
       /
  F-G-H-I-J <-- develop

then they'll wind up like this (because I-J is the only bit not reachable from E):

A-B-C-D-E <-- master
         \
          I'-J' <-- develop

which will then fast-forward merge back into master like this:

A-B-C-D-E-I'-J' <-- master
0

Your method should allow it to work. Another way you can tackle this of course is to remove your develop branch completely at the next merge to master in case rebasing failed. Then just branch off a new develop from master and rebase from that point onwards.

At my previous company we tried to switch our workflow from merging to rebasing as well. But it ended up having all sorts of weird issues from merging of different branches. It just felt cleaner and safer to start anew on the develop branch directly from master.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.