title: git workflow challenge for 2-way merging a perpetual branch with some differences that shouldn't be merged
body: <p>We use git &amp; github for our code repositories.  One of my contract developers is on windows, the rest are not.  The windows dev has had to make some changes to various files in order to make the project work on windows. These changes should never be merged back into the master branch. Other than those changes, he makes commits (including some commits to files that he may have previously made windows-specific commits to) that we want merged back to our master branch (after my review). </p>
  
  <p>My initial attempt at solving for this is failing.  We created a special branch for him "windev" and added it to origin. He's made his initial windows-specific commits to a local windev branch that tracks the remote one, and then carried on working exclusively in this branch, pushing to it.  Initially, I thought, ok I'll just cherry pick his relevant commits, since I don't want to ever merge in his windows-specific commits to our master branch. That works fine to get the good commits into our master branch. The problem is that he also needs to update his windev branch from master periodically to have the latest code base.  We started by trying rebase, but it seemed to create a confusing mess, not handling the cherry-picks or the windows-specific commits well at all.  So, I've been having him merge from the master branch each time he wants to update his code, but the problem with that is that there are duplicate commits in his branch for every one of his commits I've cherry picked. I also suspect these duplicate commits are leading to unnecessary conflicts and potential code loss. </p>
  
  <p>I'm about ready to start over with him, since this seems to be kind of messy and I'm afraid its creating errors or unnecessary, error-prone conflicts. But I'm trying to work out what the best workflow for this situation is and am kind of befuddled.  Any ideas?  (PS He's new to git, and confused by it, so I'm trying to keep it simple for him. I'd prefer to handle any complex parts of the workflow myself. )</p>