Pull Request, ignore some file changes

Solution 1:

You can't ignore some files from a pull request selectively. Two workarounds for this can be -

First -

  • Create a new branch from 'release'
  • Replace the non-required files from 'master'
  • Create pull request from this new branch

Second -

  • Create a new branch from 'master'
  • Put changes of required files from 'release'
  • Create pull request from this new branch

Any of this method will work. Which will be easier depends upon how many files are to be included / excluded.

Solution 2:

As mentioned in https://stackoverflow.com/a/28703636/12138397, it is not possible to exclude files in a Pull-Request, and the alternatives which have been proposed also work.

But there is a simpler solution to it. Here I am considering staging as my target and dev as my source

root
|-- src
|   -- app.py
|-- .gitignore
|-- settings.py
|-- requirements.txt

Let's say, I would want to ignore the settings.py file from being merged

  • First move to the target branch (the branch to which you want to merge the changes)
    git checkout staging
    
  • Then you can use the git checkout command to selective pick the files you want to merge
    git checkout dev src/
    
  • This will only merge the files changed inside src/ folder

    NOTE: You can also do it selectively for each file.

  • Then push to remote repository

    git push origin staging
    

But this solution is useful only if the files to be excluded is small.

Solution 3:

Create branch with last commit you agree with:

git branch my-branch <sha>
git checkout my-branch

Select commits you want to pull request as patches:

git format-patch -10 <sha> --stdout > 0001-last-10-commits.patch

Apply patches:

git am < 0001-last-10-commits.patch

Your commits will be as they was. You can git push -u origin my-branch immediately.