I have the following problem:
We have a large product which is in master branch. Also we have other branches that have only few files, the files that are specific to this branch only. Each of those branches represent a plugin to the main product. So for example when you get the main product, you receive lots of files, install them, etc. and later when you decide to get a plugin, you receive a package containing several files only and by uploading these file (and replacing the original ones) you get the plugin installed.
Let’s I have payment.php in master branch (as well as many other files). And I have paypal branch which has one file only which is payment.php. Now I fix a bug in master’s payment.php and want to merge this fix in paypal branch. However when I run merge, absolutely all files get added to that branch. So in the end paypal branch has all the files from master branch. Do you by chance know how this can be fixed? I want GIT to merge the files that exist in this branch only, so in the example above the paypal branch should still have one file only (payment.php) with the bug fix merged in.
This is why it’s important to manage your branches well, in particular to use topic branches and to merge upwards.
You should make that fix on a topic branch, forked from a common ancestor of all branches which will need the fix, and then merge it into both master and paypal:
If you have already made your bugfix, and you mistakenly made it on master instead of from the appropriate merge base, and the history on master hasn’t been published, you should cherry-pick or rebase it to the right place:
If the history has been published, all you can do is cherry-pick the bugfix onto the paypal branch, and remember to do it right the next time: