Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Visually merging individual changes from diff between branches

Quite often it happens that some things were developed in a feature branch where I want to split off some of them into another branch that I can submit for a PR, while maintaining the rest in the feature branch for further development as they're not ready. In general, they cannot be separated by commits so I cannot cherry pick.

Say I branch off master and want to put some things into this new branch from my feature branch. I do "Diff Against Current" to see my changes, and then want to select from them (not individual commits, but the overall changes I see in this diff view). How then can I select individual changes to copy from the new branch? The "Reverse hunk" choices in the right pane when a file is selected don't work because the action happens in the opposite direction regardless of which is the selected branch. I can't even generally open from the UI the corresponding file from either branch to copy-paste manually from one to the other, because a lot of the time "Open Current Version" and "Open Selected Version" open the same version (what's up with that??)

I've seen this article, http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/ but I don't see how I can do this visually within Sourcetree (how would I add a custom action for this?), and moreover, it limits me to doing whole files. How would I make it so I can visually merge between the file from two branches starting with Sourcetree and say using an external merge tool?

2 answers

1 accepted

0 votes
Answer accepted
Ana Retamal Atlassian Team Nov 10, 2017

Hi Borislav, I'm afraid you can not do this in Sourcetree, you can only do whole files. If you'd like, you can submit this as a Feature request in our issue tracker.

Best regards!

Ana

I would probably suggest cloning the repo twice, into two separate folders, possibly with the names of the two pranches you are interested in.   In each distinct folder, checkout the branch of interest.  Then use an external compare-and-mege tool (e.g., meld, vimdiff, WinMerge, BeyondCompare, etc.) to compare two files of interest from the two folders, and copy into the tar get file the code for the changes you are wanting to get.  Repeat this step for each two files where, atr least one has code you are interested in capturing.  This will allow you to capture all the code of interst and include it within one folder.  Compile, pull changes from the remote instance of that branch (if two or more people are working in that branch, merge in changes from master, recompile, test, push out your local changes to that branch, and blow away the other folder.  Done.

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Sourcetree

Tip from the team: configure your repos for hosting goodness!

Supported Platforms macOS Windows We recently introduced support for additional hosting services such as GitHub Enterprise, GitLab (Cloud, Community Edition, Enterprise Edition), and...

5,738 views 4 12
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you