我知道,我可以做一个交互式的rebase,reword首次提交和修复所有其他。但是如果一个分支包含数百个提交,那就变得非常繁琐。
有更简单的方法吗?
答案 0 :(得分:4)
您可以在合并到分支时使用git merge --squash
将提交压缩为单个提交。
切换到目标分支
$ git checkout target-branch
然后使用
$ git merge --squash original-branch
original-branch
中的所有提交都将合并为一个提交,并应用于target-branch
。
答案 1 :(得分: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提交。樱桃挑选是针对 索引的开始状态。当挑选多个提交效果时,这非常有用 你的索引连续。