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

5
我在本地创建了一个目录:/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.patch 文件。
  3. 然后,我想发送第三封邮件,附件为 hello_world_2.patch 文件。
不幸的是,我甚至无法完成第一步: 我的 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. 在Github上创建一个空仓库:"MyRepo" 2. 在本地机器上克隆它(使用git clone命令) 3. 然后将第一个文件"hello_world.c"添加到目录/MyRepo中 4. 然后执行命令: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

1
是的,send-email 将从您的存储库中的更改创建补丁并将其发送。您需要将其指向一个 git 管理的文件或目录。 - Andreas Wederbrand
嗨@AndreasWederbrand,我在Github上创建了一个空仓库:“MyRepo”,将其克隆到本地机器上,然后将第一个文件添加到目录“/MyRepo”中。之后,我输入: git send-email --to=abc@xyz.org --subject="[asdasdas] assd asdasd" hello_world.c现在我收到一个错误:hello_world.c中没有主题行?位于/usr/lib/git-core/git-send-email line 584。 - Haswell
1个回答

2

然后将第一个文件“hello_world.c”添加到目录/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存储库。


@Tegra 你使用的是哪个版本的 git? - VonC
@Tegra,一个捆绑包只是一个文件,可以按照您想要的任何方式发送。 - VonC
@Tegra,检查一下使用更新的(2.6.1)git是否仍存在该问题会很有趣。 - VonC
是的,git版本2.6.1也有同样的问题。 - Haswell
@Tegra git bundle 是一个压缩的仓库,其中包含了您指定的提交。它不是一个明文文件。 - VonC
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接