使用补丁跟踪 GIT 中的主开发

Tracking master development in GIT with patches

我处于以下情况:

  1. 有一个开源项目 (AT91B) 在 git 下维护,定期发布。
  2. 在 3.7.0 版本中,此项目由 ACME 克隆并修改。
  3. AT91B 已更新并发布更多版本
  4. ACME 不会主动跟踪 AT91B。
  5. 现在 AT91B 是 3.7.1
  6. 我可以访问(我可以 "git clone")两个 git 存储库。

我需要的是一个补丁(或一组补丁,如果需要)应用到 AT91B-3.7.1 tarball集成 ACME 更改(包括几个新文件和对现有文件的一些小调整)。

我知道这应该是相当标准的 git 东西(我不太了解 git,只是基本的东西;合并仍然不在我的考虑范围内,但我想我会学习)。问题是我需要使用 tarball(原始版本)+ 补丁(自制,如果需要的话)。

如何制作这样的补丁[set]?

更新:

我尝试使用 git format-patch -M -B -C -k --stdout refs/remotes/origin/at91bootstrap-3.x >my.patch,但这并不好,因为它为每个文件生成多个条目(显然每个提交一个)然后 patch 使用导致多次拒绝(IIRC 只有第一个成功)。

如何 "flatten" 补丁?

备案: 它比预期的要简单。 我真的不明白为什么挖掘信息如此困难(MANY 感谢@Rob Di Marco(参见:)。

解决方法是使用"git diff";就我而言:

git diff -M -B -C refs/remotes/origin/at91bootstrap-3.x >whatever.patch

当然,您必须处理任何冲突,但这是标准程序。