代码之家  ›  专栏  ›  技术社区  ›  Craig P. Motlin

我可以同时重新平衡和挤压提交吗?

git
  •  9
  • Craig P. Motlin  · 技术社区  · 14 年前

    当我对之前提交的一些更改进行修复时,我总是连续运行两次Rebase。是否可以一步完成此工作流?假设我有4个新的承诺。

    * (master) D
    * C
    * B
    * A
    * Base
    

    我在B中发现了一个bug,所以我创建了一个分支并修复它。

    * (master) D
    * C
    | * (fix) Fix.
    |/  
    * B
    * A
    * Base
    

    下一个我跑 git rebase --onto fix B D 把C和D移到B上。

    * (master) D'
    * C'
    * (fix) Fix.
    * B
    * A
    * Base
    

    最后我跑 git rebase --i fix^^ 要查看最后几个提交,我将挤压b并固定到一个提交中。

    * (master) D'
    * C'
    * B'
    * A
    * Base
    

    有没有更快的方法来完成相同的工作流程?我认为合并会更容易,但合并对我来说是不可能的,因为我使用的是需要线性历史的GitSvn。

    2 回复  |  直到 14 年前
        1
  •  5
  •   user502515    14 年前

    当交互式钢筋库中提交列表的编辑器出现时,您可以随意添加、删除或重新排序提交,以满足您的需要。这基本上是一种影响将要发生的樱桃采摘循环的方法(这就是Rebase的归根结底)。

        2
  •  3
  •   Greg Bacon    14 年前

    你知道吗 --squash 选择权 git merge ?

    --壁球

    生成工作树和索引状态,就好像发生了真正的合并(合并信息除外),但实际上不要提交或移动 HEAD 也不记录 $GIT_DIR/MERGE_HEAD 使下一个git commit命令创建合并提交。这允许您在当前分支的顶部创建一个提交,其效果与合并另一个分支的效果相同(如果是章鱼,则为更多)。