I have a mail with N attachments in the 000X-xxxx.patch format. I would like to apply all the patches on top of my master, but I would like to have all the commits separate, as the original author commited them. Including the commit message of course.
Method 1: Open the email, click Save as, xxx.eml and then:
git am xxx.eml
The result is ok, but everything is squashed into one commit. Not acceptable.
Method 2. All the attachments are saved in a directory, then:
git am 000*.patch
Patch format detection failed.
git apply 000*.patch
(does nothing)
This is not working. Advices? Thanks.
In order to create Git patch file for a specific commit, use the “git format-patch” command with the “-1” option and the commit SHA. In order to get the commit SHA, you have to use the “git log” command and look for the corresponding commit SHA.
If you want to create a patch for a specific commit, then use COMMIT_ID with the format-patch command.
A patch is usually skipped when the changes it contains were already applied in the past. There are many possible reasons for this: a merge, a cherry-pick, changes operated manually or using another patch etc.
Reading through the git am
man page, it looks like the commit message is formed from the Subject: line and the message body, which means that you're not going to be able to recreate the original sequence of commits (that is, there's no means by which to recover the commit message the author used for each individual commit)...although according to the man page, git am
is meant to work with inline patches, not patches included as attachments, so I'm surprised it's doing the right thing even in method 1.
If you're willing to discard the commit messages, you should be able to save the patches to individual files and just git apply ...
them in sequence.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With