如何生成单独的补丁文件(对于许多本地提交)并使用“git send-email”发送它们?

时间:2012-12-28 20:34:54

标签: git

我正在为开源项目的开发做出贡献,该项目使用git作为源代码的存储库。

在对源代码和许多本地提交进行一些修改后,我想为包含我的签名(电子邮件地址和我的名字)的每个提交生成一个补丁,并通过电子邮件发送git send-email到开源项目维护者。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

1)从git存储库下载源代码:

git clone git://address.of.repository/project/ /folder/path/on/my/computer

2)在项目中创建你的git分支。这个分支将继续你所有的本地提交

git checkout -b <private_branch_name>

3)为git commit signature设置你的电子邮件地址和你的名字:

git config --global user.name "Your Name"
git config --global user.email you@example.com

执行此操作后,您可以使用以下命令修复用于此提交的标识:

git commit --amend --reset-author

4)对源代码进行修改。可以在项目中添加新的文件/文件夹。

每个修改都可以在本地单独提交:

5)在提交更改之前。我们必须将新文件/文件夹添加到本地git存储库:

源代码的项目文件夹

git add <Newfolder>
git add <Newfile>

6)然后在本地提交一个修改:

源代码的项目文件夹

git commit -a

这将打开一个交互窗口

您可以检查提交是否已在以下位置检测到已编辑的文件和新文件:

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   bin/Makefile.am
#       modified:   configure.ac
#       new file:   src/new.c

commit -a窗口下,您必须为修改输入评论

然后使用 Ctrl + O (WriteOut)然后Enter保存您的提交,您的提交将立即保存

然后使用 Ctrl + X 退出commit -a窗口(退出)

注意:您需要在评论之间加一个空白行,以便获取您将通过eamil发送的补丁文件中的电子邮件主题和电子邮件核心

7)完成每次修改的所有提交后,现在可以为每个提交生成单独的修补程序:

源代码的项目文件夹

 git format-patch --cover-letter -M master -o ../outgoing/

这将为每个提交生成一个补丁文件,撤消文件夹传出

外发文件夹中生成的文件是包含电子邮件主题和电子邮件核心的字母以及信中附带的补丁。

您可以检查是否有主题[PATCH 00/25]的字母。这封信包含其他字母补丁的摘要,主题为[PATCH 01/25] [PATCH 02/25] [PATCH 03/25] ...

不要忘记编辑文件[PATCH 00/25]。设置电子邮件主题和电子邮件核心

如果您想使用signed-off-by生成修补程序,只需添加-s

git format-patch -s --cover-letter -M master -o ../outgoing/

8)然后使用git命令发送字母:

git send-email --to=email.address@destination.com --cc=email.address2@destination.com --cc=email.address3@destination.com outgoing/*

要使用git send-email发送修补程序,请修改〜/ .gitconfig以指定您的帐户设置:

[sendemail]
        smtpencryption = tls
        smtpserver = smtp.gmail.com
        smtpuser = yourname@gmail.com
        smtpserverport = 587

相关链接:http://www.kernel.org/pub/software/scm/git/docs/git-send-email.html