12

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

现在,A 想要将 B 的一个提交合并到他的 repo 中(他不能直接访问它来拉取)。

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

有没有办法让补丁直接“作为提交”应用到本地 A 存储库上,这样在他看来就好像它是从中央存储库(即来源)中提取的?

PS:(这可能不适用:请参阅评论:有没有办法在验证之前删除文本?)经过更多调查和测试,看起来 git am < git-formatted-patch 也会使补丁看起来提交给本地master(然后我希望当B将它推送到中央仓库时它会被识别为相同的提交)。看起来是 git apply 使补丁未提交...

4

2 回答 2

30

git am就是你要找的。要求他在本地提交并执行git format-patch。这将创建一个补丁。然后,您可以使用 git am 将其添加到您的存储库中。

于 2013-03-21T17:42:56.383 回答
4

B 可以创建和发送捆绑包而不是补丁。这允许在任何可用于推送或获取的传输都不起作用时发送提交。

于 2013-03-21T15:38:40.380 回答