我知道,我可以进行交互式变基,重新编写第一次提交并修复所有其他内容。但是如果一个分支包含数百个提交,它就会变得非常乏味。
有没有更简单的方法?
您可以git merge --squash
在合并到分支时将提交压缩为一个。
切换到目标分支
$ git checkout target-branch
然后使用
$ git merge --squash original-branch
中的所有提交original-branch
将合并为一个,并应用于target-branch
.
你可以用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 提交。挑选是针对索引的开始状态进行的。当连续挑选多个提交对您的索引的影响时,这很有用。