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

我有一个本地创build的目录: /home/Tegra.

我在/ home / Tegra中创build了以下文件:

 hello_world.c hello_world_1.c hello_world_2.c 

每个文件都是增量修改的。 我也创build了补丁:

 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.patch文件作为附件。

  3. 然后我想用hello_world_2.patch文件作为附件发送第三封电子邮件

不幸的是,我甚至无法完成第一步:

我的git已经正确configuration了相关的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上创build了一个空的版本库:“MyRepo”
  2. 克隆它在本地机器上。 (使用git clone)
  3. 然后将第一个文件“hello_world.c”添加到Directory / MyRepo中。
  4. 然后>> git add hello_world.c
  5. 然后>> git commit -m'我的第一个来源'
  6. 然后>> git push -u原点高手
  7. 之后,我input: 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”添加到Directory / MyRepo中。

首先确保你已经在你的克隆的空回购中做了什么。

 git add . git commit -m "new commit" git push 

其次, git send-email doc提到:

 --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 。 这将生成一个文件,您可以发送任何您想要的方式,并从接收器可以从中拉出/克隆。 它作为一个纯粹的git回购行为(即一个文件)。