tmp*_*ies 14 git patch git-patch
我有一个补丁文件.
我想将此补丁应用于我在git存储库中的代码.
当我使用subversion时,这个过程非常简单:右键单击 - > tortoise svn - > apply patch.它总是像我预期的那样工作.
但是我不能用git这样做.Git不适用我的补丁.它抱怨
补丁没有有效的电子邮件地址.
所以,我的问题是:"在这种情况下如何应用补丁文件?"
Git创建的补丁适用于Git工具.使用
git apply <patch>
Run Code Online (Sandbox Code Playgroud)
如果补丁不是用Git创建的,那么只需使用Git后面的补丁程序.通常这是程序'补丁':
patch <patch>
Run Code Online (Sandbox Code Playgroud)
应用补丁后,像往常一样在Git中添加和提交.
这适用于从许多开源项目使用的pipermail下载的mbox文件.这可能不会在OP的情况下工作,但在使用相同的症状/问题的结果与pipermail提取的邮件/补丁.git am
备份文件并编辑它以添加一行,
From: name@domain.com (Proper Name)
Run Code Online (Sandbox Code Playgroud)
通常情况下,行已经存在,但反垃圾邮件功能可能已经转换的@标志文本的.你可以用gnu sed命令修补一堆文件,比如
sed -ie 's/\(From:.*\) at /\1@/' *.patch
Run Code Online (Sandbox Code Playgroud)
这只是用@符号替换'at' .在此之后,git am应该接受它.
如果您可以访问git存储库,则可以使用常规命令,
git checkout oldbranch git format-patch HEAD~4 这将使四个文件成为最后一次更改的补丁(更改您的案例的数量). git checkout master git am *.patch您将获得与远程存储库相同的提交ID,消息等,以后可能会有用.
像gitk和kdiff这样的工具不会生成与format-patch相同的数据,也不会获得提交历史记录.如果您有此类数据,则必须使用git apply或生成上述补丁.
请参阅:git format-patch和git diff之间的区别.