Squash 提交到分支中的第一次提交

时间:2021-03-21 12:22:04

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

我分叉了一个仓库,从 master 建立了一个分支,向它做了两次提交,并发送了一个拉取请求。现在,我想将该分支中的提交压缩为一个,以便它在拉取请求中只显示一个提交。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

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

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