Git merge testing branch (final commit) to master branch
I have created a testing branch. It has a lot of tiny commits to build one feature.
At the end of it, I want to take the final completed changes, and put them into the master branch.
The master branch, shouldn’t contain the history of the testing branch.
Testing branch will be removed eventually.
What is the best way to achieve this?
Would generating a patch and applying it on master be the best way?
If so, how do I generate/apply the patch?
- Git Merge Branches Conflict Marker Resolution
- After merging, but before committing, how can I force a manual re-merge on a specific file?
- git merge or rebase, feature branch to another running feature branch
- Why doesn't git diff show anything for unmerged paths
- Workflow on Git when working with parallel releases
- re-merged github branch that has been reverted before
3 Solutions collect form web for “Git merge testing branch (final commit) to master branch”
Various approaches are described in “Understanding the Git Workflow”:
Short lived work
The vast majority of the time, my cleanup is just a squash merge.
git checkout master git merge --squash private_feature_branch git commit -v
I decide my change should be broken into smaller changes, so squash is too blunt an instrument. (As a rule of thumb I ask, “Would this be easy to code review?”)
git rebase –interactive master
(not an option in your case, as you mention in your question)
Declaring Branch Bankruptcy
Maybe my feature branch existed for a very long time, and I had to merge several branches into my feature branch to keep it up to date while I work. History is convoluted.
It’s easiest to grab the raw diff create a clean branch.
git checkout master git checkout -b cleaned_up_branch git merge --squash private_feature_branch git reset
I now have a working directory full of my changes and none of the baggage from the previous branch. Now I manually add and commit my changes.
You are looking for
--squash option of
Produce the working tree and index state as if a real merge happened
(except for the merge information), but do not actually make a commit
or move the HEAD, nor record $GIT_DIR/MERGE_HEAD to cause the next git
commit command to create a merge commit. This allows you to create a
single commit on top of the current branch whose effect is the same as
merging another branch (or more in case of an octopus).
With –no-squash perform the merge and commit the result. This option
can be used to override –squash.
git merge --squash test-branch and commit away.
You may also try
git merge --no-commit --no-ff test-branch
git checkout master git merge --squash testing-branch
--squash will put your working set in the state as if all the changes on testing-branch got merged in with master, but won’t create any commits. You can then do
git commit and all the changes will go in in a single commit.