我正在为一个开源项目的开发做出贡献,该项目使用 git 作为源代码的存储库。
在对源代码和许多本地提交进行了一些修改之后,我想为每个提交生成一个包含我的签名(电子邮件地址和我的姓名)的补丁,并通过电子邮件发送给git send-email
开源项目维护者。
我该怎么做?
我正在为一个开源项目的开发做出贡献,该项目使用 git 作为源代码的存储库。
在对源代码和许多本地提交进行了一些修改之后,我想为每个提交生成一个包含我的签名(电子邮件地址和我的姓名)的补丁,并通过电子邮件发送给git send-email
开源项目维护者。
我该怎么做?
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 签名设置您的电子邮件地址和您的姓名:
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
这将打开一个interactif窗口
您可以检查提交是否检测到已编辑的文件和以下新文件:
# 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
你的提交现在就被保存了
然后用+ (Exit)退出commit -a
窗口CtrlX
注意:您需要在评论之间添加一个空行,以便在您将通过 eamil 发送的补丁文件中获取电子邮件主题和电子邮件核心
7) 在为每个修改完成所有提交之后,现在您可以为每个提交生成单独的补丁:
源码的项目文件夹下
git format-patch --cover-letter -M master -o ../outgoing/
这将为每个提交生成一个补丁文件撤消文件夹传出
输出文件夹中生成的文件是包含电子邮件主题和电子邮件核心的信件以及信件中包含的补丁。
您可以检查是否有带有 subject 的字母[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