Create a patch including specific files in git

GitFilePatch

Git Problem Overview


Let's say that I am 7 commits ahead of the origin/master repo. I would like to create a patch that includes in the patch specific files that were changed, not all the files. Or equivalent exclude specific files from the patch that were changed. How can I achieve that?

Git Solutions


Solution 1 - Git

You can create a patch file by restricting the output of git diff by listing paths at the end of the command (after a -- to avoid any potential clashes between path names and branch names).

For example, you could do the following:

git diff origin/master HEAD -- app/models/region.rb doc/ > changes.patch

Above commands generate a patch that shows only the differences for a particular file: region.rb and a particular directory : doc when compared to origin/master

Then you can apply the patch using

patch -p1 < changes.patch

The -p1 tells patch to strip the a/ and b/ in the paths in the patch

Solution 2 - Git

You can include files in the patches with:

git format-patch <rev> <files...>

Example

git format-patch HEAD^^^ Makefile

Will give you three files 0001-[commit] ... 0003-[commit] only containing the Makefile.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionvasilakisfilView Question on Stackoverflow
Solution 1 - GitMark LongairView Answer on Stackoverflow
Solution 2 - GitlarsView Answer on Stackoverflow