无法使用git send-email发送源代码和补丁



我在本地创建了一个目录:/home/Tegra.

我在/home/tegra中创建了以下文件:

hello_world.c hello_world_1.c hello_world_2.c

每个文件都是增量修改的。我还创建了如下补丁:

diff -u hello_world.c hello_world_1.c > hello_world_1.patch
diff -u hello_world_1.c hello_world_2.c > hello_world_2.patch
  1. 现在我想首先使用git send-email发送电子邮件到电子邮件地址abc@xyz.org.其中应该包含hello_world.c文件

  2. 然后我想用hello_world_1发送第二封邮件。

  3. 然后我想用hello_world_2发送第三封邮件。补丁文件作为附件。

不幸的是,我甚至不能做第一步:

我的git已经正确配置了相关的smtp服务器tls 587端口。

我尝试了以下命令:

git send-email --to abc@xyz.org --subject My Hello hello_world.c

我得到以下错误:

Cannot run git format-patch from outside a repository

仓库在哪里出现?我应该首先维护一个代码库吗?

编辑:对于步骤1:根据下面的注释,我们需要一个存储库:

  1. 在Github上创建一个空存储库:"MyRepo"
  2. 在本地机器上克隆它。(使用git clone)
  3. 然后将第一个文件"hello_world.c"添加到目录/MyRepo中。
  4. Then>>git add hello_world.c
  5. >>git commit -m 'My First source'
  6. 然后>>git push -u origin master
  7. 之后,我输入:git send-email -to=abc@xyz.org -subject="[asdasdas] assd asdasd" hello_world.c

现在我得到一个错误:

No subject line in hello_world.c ? at /usr/lib/git-core/git-send-email line 584

然后将第一个文件"hello_world.c"添加到目录/MyRepo"中。

首先确保你已经在克隆的空repo中提交了任何东西。

git add .
git commit -m "new commit"
git push
第二,git send-email文档确实提到了:
--subject=<string>

指定邮件线程的初始主题。仅当--compose也设置为时需要。

确保使用--compose

该格式期望文件的第一行包含消息的" Cc: "值和" Subject: "作为第二行。

这只适用于.patch,而不是源本身。
参见git format-patch和"如何使用git-send-email发送补丁"以获得更完整的示例:

最后一次提交:

git send-email -1  --to=abc@xyz.org --subject="[asdasdas] assd asdasd"
第三,一个更简单的解决方案是使用 git bundle 。这将生成一个文件,您可以以任何方式发送该文件,并且接收者可以从中提取/克隆。

最新更新