git partial merge, not whole branch
I've read about some tricks with merge in Git: merging public and private branches while while keeping certain files intact in both branches and others and not found a solution.
In my case I'm feeling need to do opposite merge strategy. In parallel development I have to keep some files same across the arbitrary branches. From other side I do not want to do squash or no-commit merge, while difference are significant and could break current state of testing branch.
What I want something like
git checkout testing
git merge config.xml -b development or git merge config\*.xml -b development
I guess this is like git merge-files ... command, but second file delivered from the branch, not from the filesystem. Is it possible? or may be there is a kind of workaround? submodules? attributes?
There are a couple things you can do.
One, you can cherry-pick the changes you want, which applies only a single commit. For example, if there's a change that only touches config.xml, you can cherry-pick it with
$ git cherry-pick $COMMIT_ID_YOU_WANT
You could also just grab config.xml from the development branch:
$ git checkout testing $ git checkout development -- config.xml
That'll get you the same version of config.xml that exists in the development branch, but note that it won't pull in the history of changes to the file.