1

我知道,我可以进行交互式变基,重新编写第一次提交并修复所有其他内容。但是如果一个分支包含数百个提交,它就会变得非常乏味。

有没有更简单的方法?

4

2 回答 2

4

您可以git merge --squash在合并到分支时将提交压缩为一个。

切换到目标分支

$ git checkout target-branch

然后使用

$ git merge --squash original-branch

中的所有提交original-branch将合并为一个,并应用于target-branch.

于 2016-07-23T09:31:10.130 回答
4

你可以用git cherry-pick -n. 与该方法相比,该方法更灵活,git merge --squash因为它允许您指定任意范围的提交:

git cherry-pick -n OTHER_BRANCH~100..OTHER_BRANCH
git commit -m "Merged 100 commits from OTHER_BRANCH"

git cherry-pick

-n|--no-commit

通常该git cherry-pick命令会自动创建一系列提交。此标志应用必要的更改来挑选每个命名提交到您的工作树和索引,而不进行任何提交。此外,使用此选项时,您的索引不必匹配 HEAD 提交。挑选是针对索引的开始状态进行的。

当连续挑选多个提交对您的索引的影响时,这很有用。

于 2016-07-23T10:23:54.780 回答