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?
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.
Supported Platforms macOS Windows We recently introduced support for additional hosting services such as GitHub Enterprise, GitLab (Cloud, Community Edition, Enterprise Edition), and...
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