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: What do the pluses mean?
  • git merge vs. git rebase when bringing aosp ics branch into master
  • Git complex merge (after migration from svn)
  • How to force git into “merge conflict mode”?
  • git format-patch : how can I get it to ignore already merged commits?
  • git subtree: possible to change subtree branch/path in a forked repository?
  • How to find branch whose commit have been merged or rebased
  • Automatically merge two XML files by selecting both conflicting lines
  • 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
    

    Larger work

    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 git merge:

    –squash –no-squash

    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.

    So 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
    

    That --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.

    Git Baby is a git and github fan, let's start git clone.