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.

Original source

Related problems