如何应用git补丁,就好像作者致力于我的回购协议一样?

如何应用git补丁,就好像作者致力于我的回购协议一样?,git,commit,patch,Git,Commit,Patch,让我们假设有一个中央存储库,在该存储库中,来自附属存储库的提交会被推送到某个时间。开发商A在回购协议上做出了一些承诺,而B也自己做出了一些承诺 现在,A希望将B的一项承诺纳入其回购协议(他无法直接获得该协议) 一种方法是让B创建一个补丁并将其发送给a,但在这种情况下有两个问题: 1.补丁将作为本地修改显示给用户,用户必须提交(使用自己的名称) 2.一旦更新中央回购协议,变更将发生冲突(由两位不同的作者推动) 是否有办法将补丁直接“作为提交”应用于本地回购协议,使其看起来像是从中央回购协议(即原始

让我们假设有一个中央存储库,在该存储库中,来自附属存储库的提交会被推送到某个时间。开发商A在回购协议上做出了一些承诺,而B也自己做出了一些承诺

现在,A希望将B的一项承诺纳入其回购协议(他无法直接获得该协议)

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

是否有办法将补丁直接“作为提交”应用于本地回购协议,使其看起来像是从中央回购协议(即原始协议)中提取的


PS:(这可能不适用:请参阅注释:有没有办法在验证之前删除文本?)经过更多的调查和测试后,看起来git amB可以创建并发送一个补丁,而不是一个补丁。这允许在推送或获取可用的任何传输都不起作用时发送提交。

git am
就是您要找的。
请他在本地提交并执行git格式修补程序。这将创建一个补丁。然后,您可以使用git-am将其添加到您的回购中。

git-am
不会导致与原始提交相同的提交。作者身份和时间将被保留,但新提交将有不同的提交时间和不同的提交者身份(除非你向git隐瞒你是谁)。这些差异将导致结果提交具有不同的SHA1 ID。如果作者正在休假,而您所拥有的只是差异,该怎么办?是否有办法将更改作为特定身份提交到本地回购?最简单的方法是使用
git apply
修改文件,然后
git-c author.name=”“-c author.email=”“commit
。但这与最初的问题完全无关。这不会保留提交ID。除了我在对问题的评论中指出的差异外,作者时间也会与作者创建的任何提交不同。