如何应用git补丁,好像作者承诺我的回购?

a1a*_*1an 10 git patch commit

让我们假设有一个中央存储库,其中来自卫星的提交被推送一段时间.开发人员A对他的回购做了一些提交,而B也自己做了一些.

现在,A希望将B的一个提交合并到他的回购中(他无法直接访问).

一种方法是让B创建补丁并将其发送给A,但在这种情况下有两个问题:1.补丁将显示为A的本地修改,然后提交它(使用自己的名称)2.更新中央仓库更改将发生冲突(由两位不同的作者推动).

有没有办法让补丁直接"作为提交"应用于本地A回购,以便它看起来好像是从中央回购(即原产地)拉出来的?

PS :(这可能不适用:请参阅注释:有没有办法在验证之前对文本进行打击?)经过一些调查和测试之后看起来也是git am <git-formatted-patch会使得修补程序看起来像是本地主人(然后我希望当B将它推送到中央仓库时它将被识别为同一个提交).它似乎是git apply,使补丁未提交......

std*_*all 22

git am是你在找什么.请他在当地做并做git format-patch.这将创建一个补丁.然后,您可以使用git am将其添加到您的仓库中.


qqx*_*qqx 5

B 可以创建并发送捆绑包而不是补丁。这允许在没有可用于推送或获取的传输工作时发送提交。

  • 最简单的方法是使用 `git apply` 修改文件,然后使用 `git -cauthor.name="&lt;author name&gt;" -cauthor.email="&lt;author email&gt;" commit`。但这与原来的问题完全无关。这不会保留提交 ID。除了我在对该问题的评论中指出的差异之外,作者时间也与作者创建的任何提交有所不同。 (2认同)