【问题标题】:git: rebase between init commit to specified commitgit:在初始化提交到指定提交之间变基
【发布时间】:2014-08-28 15:08:15
【问题描述】:

如何在提交之间变基:

假设我想在 init 和提交 3 之间进行变基(将这些提交压缩在一起)

假设我有

commit 5
commit 4
commit 3
commit 2
commit 1
commit init

如果我这样做

git rebase -i commit 3 

我明白了:

pick commit 3
pick commit 4
pick commit 5

那么当我这样做时

squash commit 3
pick commit 4
pick commit 5

我执行了这个动作,我得到了这个:

commit 3
commit 2
commit 1
commit init

而不是我想要的。

我如何压缩 commit initcommit 3,而不是 commit 3commit 5

提前致谢。

杰尼亚。

【问题讨论】:

    标签: git rebase


    【解决方案1】:

    git rebase -i --root
    

    Git 会带你进入编辑器

    pick commitinit
    pick commit2
    pick commit3
    pick commit4
    pick commit5
    

    然后改成

    pick commitinit
    squash commit2
    squash commit3
    pick commit4
    pick commit5
    

    【讨论】:

      【解决方案2】:

      你不会得到你所显示的命令所建议的结果,因为你应该仍然有提交 4 和 5,最后。要将它们全部压缩在一起,您必须将它们的 picks 替换为 squashes,而不仅仅是提交 3 的那个。

      为了在交互式变基中将一个提交压缩到另一个提交,您必须从要压缩的点之前开始变基,以便列表如下所示:

      pick commit 2
      pick commit 3
      pick commit 4
      pick commit 5
      

      现在您可以在第二行将 pick 替换为 squash 并将提交 2 和 3 合并(成为一个新的不同提交)。 (请注意,提交 4 和 5 也将被复制到新的不同提交,具有相同的更改但不同的父 ID。)

      如果您也想将提交 2 压缩为提交 1,则必须更进一步。

      基本上,您必须从兴趣点之前的一点开始变基。如果兴趣点就在开头,这就有点问题了——所以交互式变基允许你指定--root

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-02
        • 1970-01-01
        • 2013-12-20
        • 2015-08-19
        • 2018-06-21
        • 2020-11-27
        • 1970-01-01
        • 2014-10-29
        相关资源
        最近更新 更多