git - rebase 以压缩同一分支上的多个提交

标签 git

我们可以使用 rebase 将多个提交压缩为同一个分支上的一个提交吗?

举个例子,我创建了两个主题分支——来自 master 的 issueA_1 和 issueA_2。我在两个分支中都进行了几次提交,如图所示(为简洁起见,我在这里使用提交名称而不是提交哈希):

           -->  (issueA_1) - commitX1
          /
(master)--
          \
           -->  (issueA_2)
                   |
                commitY1
                   |
                commitY2

然后我做:

git checkout issueA_2
git rebase -i issueA_1

我将 rebase 文件更改为:

pick commitY1
fixup commitY2

在这个 rebase 之后,提交历史看起来像这样:

           -->  (issueA_1) - commitX1
          /
(master)--
          \
           -->  (issueA_2)
                   |
                commitX1
                   |
                commitY1
                   |
                commitY2

我不再需要分支 issueA_1,所以我需要:

git branch -D issueA_1

issueA_2 的提交历史还不足以 merge 到 master 中。在我 merge 到 master 之前,我希望这个分支的 commitX1、commitY1 和 commitY2 被压缩成一个单一的提交。这可能吗?

最佳答案

是的,我发现最简单的方法是:

git rebase -i HEAD~3

这将让您查看最后 3 次提交,然后您可以压缩它们。

关于git - rebase 以压缩同一分支上的多个提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25323878/

相关文章:

克隆远程 Git 仓库时的 git-upload-pack : command not found,

git - 使用 SourceTree 恢复/删除特定分支上的特定 Git 提交?

git - 无法将文件推送到 git 存储库

Git 子模块校验错误 : "fatal: reference is not a tree"

git - 将 git post-commit 钩子(Hook)应用到所有当前和 future 的存储库

git commit 在索引中留下更改

merge MR 时 Gitlab CI 运行作业

git - .gitignore 文件忽略所有文件但不忽略嵌套文件

git - 有什么方法可以实时监控 git 分支和提交?

git - 将 git parent 指针设置为不同的父级