我被要求在某人的存储库中将一个大的提交分成多个较小的提交。 所以我分叉了存储库。做了多次提交并做了多次提交。
基本上我现在就有这个:
- 较小的提交3 [作者:A]
- 较小的提交2 [作者:A]
- 较小的提交1 [作者:A]
- 一些较早的提交[作者:C]
原始回购是:
- 一个巨大的提交[作者:B]
- 一些较早的提交[作者:C]
我想做的是将更改合并回原始回购,而不提及“作者A”。 也就是说,原始回购应该看起来像原始作者分裂:
- 较小的提交3 [作者:B]
- 较小的提交2 [作者:B]
- 较小的提交1 [作者:B]
- 一些较早的提交[作者:C]
这样做的正确和/或更快/最简单的方法是什么?
如果以这种方式更改作者是不可能的,那么合并更改的最简洁方法是什么,而不会过多地混淆提交历史(我们正在使用github)。
答案 0 :(得分:1)
假设您有权访问原始回购 B ,您可以cherry pick A 提交的提交。这样你就可以做那些提交,好像它们是由 B 制作的。
Git cherry picking :给定一个或多个现有提交,应用每个引入的更改,为每个提交录制一个新提交。
编辑:默认情况下,cherry pick会更改提交者值,但会将 author 值保留为原始提交。为防止这种情况,您应该使用 - no-commit 参数,然后提交更改。
git cherry-pick --no-commit 86d85b4972c46c80cba49fcc8a458b803cef17f6
git commit
这样,提交者和作者都将设置为新用户。