Subversion: How to merge a specific commit

I have some commit on my branches. I want to merge the branches to trunk, but there have some commit that I don't merge to trunk on my branches. How do I do?

What you want to accomplish is usually called cherrypicking in version control systems.

Say that you want to merge revisions 345, 364 and 377 from your branch to trunk, you will do the following at the top level directory of a clean working copy of trunk:

svn merge -c345,364,377 ^/_your_branch_

on Windows cmd add quotes around the branch name:

svn merge -c345,364,377 "^/_your_branch_"

You can find more information in the corresponding section of the SVN Book.

Advanced Merging, If you want to merge the changes from a single revision, just select that revision. If you want to merge changes from several revisions, then select that range (using � If you are merging revisions in chunks, the method shown in the Subversion book will have you merge 100-200 this time and 200-300 next time. With TortoiseSVN you would merge 100-200 this time and 201-300 next time. This difference has generated a lot of heat on the mailing lists.

Just to extend Yannick's answer. When you can merge one/few specific commits from one to another branch you need(for example need merge commits r13 and r666 from branch 'from' into branch 'to'):

  1. Check commits availability (just to ensure):

    svn diff -c 13,666 https://fullpathtoyourproject/branches/_from_
  2. Swith on branch to:

    svn sw https://fullpathtoyourproject/branches/_to_
  3. Merge commits

    svn merge -c 13,666 https://fullpathtoyourproject/branches/_from_

If you need get 'fullpathtoyourproject' just type:

svn info

In section URL you will see this path.

I prefer to use FULL url/path, cause personally relative path did not work for me on some projects.

Merging, But assuming that you've reviewed the merged change, you can svn commit the You want to merge the changes in a specific file into a file by the same name� Select the option “Merge two different trees”. Under “From” select the Head revision. Under “To” select the old revision + 1 (i.e. if you’d like to revert to revision 169, type revision 170 into the box). At the next screen, feel free to click “Test Merge” to have a look at your results before taking the plunge.

If one has TortoiseSVN installed, below are the steps to merge a range of revisions from a branch to the other.

  1. Have a local checkout of the branch to which you want to merge a range of revisions from a source branch.
  2. Right Click inside root folder --> TortoiseSVN --> Merge
  3. By default, "Merge a range of revisions" is clicked.
  4. Click Next
  5. Enter the URL to merge from
  6. Enter the specific range of revisions you want to merge
  7. One can also click Show log and select the desired revision or range of revisions
  8. Click Test Merge to check if it merges desired revisions/files.
  9. Click merge

Copying Changes Between Branches, In normal usage the working copy should be up to date, at a single revision, with no local modifications and no switched subtrees. - The 'Feature Branch' Merging � Subversion's svn mergecommand is able to use revision numbers. You can merge specific changesets from one branch to another by naming them in the merge arguments: passing -c 9238to svn mergewould merge changeset r9238

You can merge the commits you want with the revision number.

The following applies to 'svn merge' in Subversion 1.8 and later , reverse-merge) a range, simply swap the start and end revisions, e.g. -r 76100: 76077 to revert -r 76077:76100 . To revert a single revision,� If Merge Tracking is active, then Subversion will internally track metadata (i.e. the svn:mergeinfo property) about merge operations when the two merge sources are ancestrally related—if the first source is an ancestor of the second or vice versa—this is guaranteed to be the case when using the first two forms.

Quick SVN merging guide, But assuming that you've reviewed the merged change, you can svn commit the You want to merge the changes in a specific file into a file by the same name� Download from external subversion repository and merge own code. svn,merge,tortoisesvn,svn-externals. Merging is for taking two trees in the same repository and merging them to your working copy from the same repository. You would then commit that merge to the repository.

Copying Changes Between Branches, In this example the commit number 344 in trunk. Determine the source branch URL. You can see this by typing svn info in the top level directory. First, merge trunk to branch(trunk->branch) to update your branch with the latest trunk changes. Then merge your new features from branch to trunk(branch->trunk). Merge branch to trunk (branch->trunk) Commit all code in your working directory.

Subversion: merging a commit from trunk to branch, But assuming that you've reviewed the merged change, you can svn commit the You want to merge the changes in a specific file into a file by the same name� The preferred method is to start with a clean working copy, check out the branch to merge into (i.e. check out trunk), then use the TortoiseSVN Merge Wizard to merge the desired branch into trunk. Start the Merge Wizard. Select Merge Range of Revisions. Select the branch to merge into the current branch.

  • Do you mean that you have some commits that you don't want to merge in your trunk or that you have some conflicts when trying to merge your changes?
  • example,there have seven commit on my branches ,but I only want to merge three commit.
  • So You have to merge only specify revision.…
  • In the link, it looks like ^/trunk is the source branch. So I think the example should be svn merge -c345,364,377 ^/yourbranch while having trunk checked out, right?
  • @Mark yes, absolutely, I've just updated the example. Thanks!
  • This is a good answer because it explains the source and destination of the merge.