Git和Email

最后更新于:2022-04-01 01:00:18

## 向一个项目提交补丁 如果你只做了少量的改动, 最简单的提交方法就是把它们做成补丁(patch)用邮件发出去: 首先, 使用[git format-patch](http://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html); 例如: ~~~ $ git format-patch origin ~~~ 这会在当前目录生成一系统编号的补丁文件, 每一个补丁文件都包含了当前分支和origin/HEAD之间的差异内容。 然后你可以手工把这些文件导入你的Email客户端. 但是如果你需要一次发送很多补丁, 你可能会更喜欢使用[git send-email](http://www.kernel.org/pub/software/scm/git/docs/git-send-email.html)脚本去自动完成这个工作. 在发送之前, 应当先到项目的邮件列表上咨询一下项目管理者, 了解他们管理这些补丁的方式。 ## 向一个项目中导入补丁 Git也提供了一个名为[git am](http://www.kernel.org/pub/software/scm/git/docs/git-am.html)的工具(am是"apply mailbox"的缩写)去应用那些通过Email寄来的系列补丁. 你只需要按顺序把所有包含补丁的消息存入单个的mailbox文件, 比如说"patches.mbox", 然后运行 ~~~ $ git am -3 patches.mbox ~~~ Git会按照顺序应用每一个补丁; 如果发生了冲突, git会停下来让你手工解决冲突从而完成合并. ("-3"选项会让git执行合并操作; 如果你更喜欢中止并且不改动你的工作树和索引, 你可以省略"-3"选项.) 在解决冲突和更新索引之后, 你不需要再创建一个新提交, 只需要运行 ~~~ $ git am --resolved ~~~ 这时git会为你创建一个提交, 然后继续应用mailbox中余下的补丁. 最后的效果是, git产生了一系列提交, 每个提交是原来mailbox中的一个补丁, 补丁中的作者信息和提交日志也一并被记录下来。
';