将一个文件从一个分支合并到另一个分支已经asked before,并且要做到相当简洁solution:
git checkout A
git checkout --patch B f
但是如何在两个存储库中有效地做到这一点?
答案 0 :(得分:1)
还有一个简单的解决方案,它涉及修补。 git可以很好地处理通过电子邮件发送的补丁。这是Linus Torvalds最重要的初始用例之一。所以我们首先在源代表中生成这样的补丁文件,然后在目标中使用它:
cd source_repository/
git log --reverse --follow -p --format=email filename > patch
cd other_repository/
git am --whitespace=nowarn source_repository/patch
rm source_repository/patch
一些解释:
git am
代表“git apply mailbox file”,用于集成某人通过电子邮件发送的补丁git log –p
可以使用选项--format=email
--follow
用于跟踪文件的完整历史记录,即使它已重命名。 --follow
阻止git log
接受多个文件名。但这是一个重要的开关,这就是为什么我建议在多个文件的循环中使用此方法。--reverse
是必需的,因为git am
要求提交按时间顺序排列,默认情况下git log
不会输出。git am
会警告带有尾随空格的行。 --whitespace=nowarn
会抑制这些警告。您可能不想使用它并清理空白,但这是样式指南的问题