【问题标题】:Squash commits to the first commit in a branchSquash 提交到分支中的第一个提交
【发布时间】:2021-06-18 06:46:06
【问题描述】:

我创建了一个存储库,从 master 创建了一个分支,对其进行了两次提交,然后发送了一个拉取请求。现在,我想将该分支中的提交压缩为一个,以便它在拉取请求中仅显示一个提交。

谁能解释一下步骤,怎么做?

【问题讨论】:

  • 您想保留日志消息并显示新提交是多个提交的组合,还是只创建一个新提交,其中包含未提及原始提交的日志消息?
  • 这能回答你的问题吗? Git: How to squash all commits on branch
  • 在主分支上压缩提交很容易。但是当你在一个分支时,我无法理解如何挤压。我只想将第一次提交之后的所有提交压缩到第一个提交中。
  • 喜欢,选择 squash squash

标签: git github git-branch pull-request squash


【解决方案1】:

你可以git rebase -i HEAD~[amount of commits]。通常会打开一个 vim 编辑器。

要编辑,请按“i”。之后,您可以使用第一次提交并将其他提交上的单词 pick 更改为 squash

编辑完成后按escape,然后输入wq,它将写入更改然后退出。作为最后一步,您执行 git push -f

【讨论】:

  • 这种方法将压缩主分支中的提交。我创建了一个子分支,我想压缩其提交
  • 不,不会的。你只需要你的 git 指向那个分支。所以基本上是一个 git checkout [branch_name]
【解决方案2】:

如果您想完全丢弃原始历史记录并且不在日志中保留对已放弃提交的任何引用,您可以简单地这样做:

git reset $branch_point 
git commit -a -m "new message"

(假设您从一个干净的工作目录开始,在您希望分支所在的提交处签出。)初始重置不会修改工作目录,而只是在合并时将分支设置回主分支base(例如,branch_point=$( git merge-base HEAD master )),然后进行新的提交。

如果您想保留对所有旧提交的引用,只需执行 git merge --squash

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2016-09-04
    • 2018-04-03
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2019-08-12
    相关资源
    最近更新 更多