How do I merge changes to a single file, rather than merging commits?
git, git-branch, merge
Solution
I came across the same problem. To be precise, I have two branches `A` and `B` with the same files but a different programming interface in some files. Now the methods of file `f`, which is independent of the interface differences in the two branches, were changed in branch `B`, but the change is important for both branches. Thus, I need to merge just file `f` of branch `B` into file `f` of branch `A`.
A simple command already solved the problem for me if I assume that all changes are committed in both branches `A` and `B`:
git checkout A
git checkout --patch B f
The first command switches into branch `A`, into where I want to merge `B`'s version of the file `f`. The second command patches the file `f` with `f` of `HEAD` of `B`. You may even accept/discard single parts of the patch. Instead of `B` you can specify any commit here, it does not have to be `HEAD`.
Community edit: If the file `f` on `B` does not exist on `A` yet, then omit the `--patch` option. Otherwise, you'll get a "No Change." message.
Problem
I have two branches (A and B) and I want to merge a single file from branch A with a corresponding single file from Branch B.