【问题标题】:How to Squash 3 commits into 1?如何将 3 个提交压缩为 1 个?
【发布时间】:2017-10-30 03:55:15
【问题描述】:

我对 git 还很陌生,所以我一直在试图弄清楚如何将 3 个提交压缩为 1 个,以便我的 PR 可以合并。我已经阅读了很多文档和指南,并且有点了解如何压缩提交,但我的一个提交没有出现。当我输入:“git rebase -i HEAD~5”时,我尝试附上我的提交照片和我的终端照片,但不幸的是我是一个新用户,所以我不能?但无论如何,我将非常感谢一些帮助。

【问题讨论】:

    标签: git github git-commit git-squash


    【解决方案1】:

    嘿,GitHub 在合并 PR 时有 Squash And Merge 选项。因此,您无需执行任何操作,只需在合并时使用 Squash and Merge 选项即可。

    更多信息在这里https://help.github.com/articles/about-pull-request-merges/#squash-and-merge-your-pull-request-commits

    【讨论】:

    • 我认为我在 repo 中没有写权限
    • 好吧,只要告诉负责的人就可以了。
    • 但是合并了。
    【解决方案2】:

    从 2016 年 4 月 1 日起,存储库管理员现在可以执行 Squashing of pull requests。但是,如果您被要求自己这样做,那么:

    1. This SO response covers it
    2. This article by Eli Bendersky covers this as well

    【讨论】:

      【解决方案3】:

      压缩提交意味着创建一个新的提交而不是几个。 git reset 到您分支的基本提交并创建一个新的。然后只需 git push -f 到您的分支。

      【讨论】:

        【解决方案4】:

        如何将 3 个提交压缩为 1 个?

        • 首先执行 git log 并确认您要压缩的提交已提交。
        • 如果您想从头脑中清除前 3 个提交,

        使用此命令,

        git rebase -i HEAD~3
        

        这里的波浪号 ~ 符号与 3 选择最近的三个提交,它将弹出一个交互式 shell,您可以在其中选择顶部提交并通过输入 s 将其他两个提交压缩为一个,这意味着压缩。

        如果您的提交没有出现,请执行 git log 并查看,如果没有则

        git add files
        git commit -m 'your commit'
        

        【讨论】:

        • 我已经尝试过 git rebase HEAD~3 并且当我执行 git log 时它们会出现,但在我执行 rebase 时不会出现。如果我可以向您展示我的提交和终端输出,我相信这会简单得多。
        • 在您的终端中输入git reflog,它会显示您所做的历史记录。在git rebase 之后,您必须将其推送到原点。如果你想把它推送到master,做git push master或者做分支,做git push origin your_branch
        • 当您rebase -i 时,您必须将第二次和第三次提交编辑为squashed 而不是picked;这需要知道如何在编辑器中编辑文件。 (或者,Git GUI 通常应该有一些方法可以让你变基和压缩。)
        猜你喜欢
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 2023-01-12
        • 2020-11-15
        • 2011-07-15
        相关资源
        最近更新 更多