How to merge specific files from Git branches
git, git-merge
Solution
When content is in `file.py` from branch2 that is no longer applies to branch1, it requires picking some changes and leaving others. For full control do an interactive merge using the `--patch` switch:
$ git checkout --patch branch2 file.py
The interactive mode section in the man page for `git-add(1)` explains the keys that are to be used:
y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk nor any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk nor any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
The split command is particularly useful.
Problem
I have 2 git branches: - branch1 - branch2 I want to merge all the history (multiple commits) of `file.py` in branch2 into `file.py` in branch1 and only that file. In essence I just want to work on the `file.py` in branch1 but want to take advantage of the `merge` command. What is the best way to do this?