是否可以轻松地将所有提交从一个分支移动到另一个分支作为一个提交?

时间:2016-07-23 09:27:11

标签: git rebase fixup

我知道,我可以做一个交互式的rebase,reword首次提交和修复所有其他。但是如果一个分支包含数百个提交,那就变得非常繁琐。

有更简单的方法吗?

2 个答案:

答案 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提交。樱桃挑选是针对   索引的开始状态。

     

当挑选多个提交效果时,这非常有用   你的索引连续。