.patch
命令为每次提交生成的
git format-patch
文件中,然后通过在空目录上使用“git init”来重新构建存储库,然后使用每个补丁文件都有一个
git apply
命令。它有效——只有一个问题——当
git am
将补丁应用到存储库而不是保留补丁的 ID 标签时,它会生成一个新的 ID 标签。这可能会在以后成为一个问题,因为它可能会导致很难确定哪些提交是多余的,哪些不是多余的。至于为什么我不使用像
git clone
这样的常规方法来克隆存储库 - 答案是一般来说,我确实使用
git clone
来克隆存储库 - 但我有非常具体的原因尝试看看我是否可以这样做的时刻太长了,无法在这里详细说明(尽管我可能会暗示原因)稍后在这个问题中)---不仅这些原因太长,而且我看不出它们的最终细节如何影响这个问题的正确答案。 但是,如果您告诉我
.patch
不是用于此目的的正确文件格式,我愿意接受。我最想做的是:
所以猜测...
当您在 git 中创建提交时,它会附加 6 条元数据。 这些是作者姓名/电子邮件/时间和提交者姓名/电子邮件/时间。 如果您从头开始创建新提交,则作者姓名/电子邮件和提交者姓名/电子邮件都将匹配。
他们不必这样做。 您可以通过 GIT_AUTHOR_NAME 和类似的环境变量覆盖它们。 如果你选择或变基,它会修改它们。
当您运行
git format-patch
时,它根本不会向您提供提交者信息。 同样,当您运行
git am
时,它不会查找提交者信息,而是用运行 git am
的人的姓名和电子邮件覆盖它。 如果该信息发生变化,这将导致创建不同的 SHA。没有简单的方法来解决它(您必须破解 format-patch 和 am 才能保留提交者信息。但是,您可以计算提交补丁 ID(git patch-id)并比较它们,而不是比较提交 SHA。它们应该是相同的。