我创建了一个分支,使用不同的提交多次推送,出于测试目的,我必须部署到服务器,这就是为什么我有很多有趣的提交并推送到该分支的原因。现在我已经完成测试,如何删除以前的提交,我只需要提交一次即可进行PR?
答案 0 :(得分:0)
有多种方法可以将所有内容压缩为单个提交。结果取决于您想要什么。如果希望新提交位于master分支上,则可以检出master,使用--squash将主题合并到master中,它应该创建一个可以提交到服务器的新提交。或者,您可以执行交互式变基,并压缩当前主题分支上的所有内容并强制推送。
以下是示例: https://robots.thoughtbot.com/git-interactive-rebase-squash-amend-rewriting-history
答案 1 :(得分:0)
首先,您需要确保也没有人在使用此分支,或从中创建一些派生分支。另外,如果出现问题,请从您的修改中进行备份。
在那之后,您可以计算在这种情况下有多少次提交。例如,如果您有6个有趣的撤消提交,但需要保留文件更改,则只需:
git reset --soft HEAD~6
此命令将撤消6个本地提交,并在git status
中显示这6个提交中文件的所有更改。
现在只需进行一次提交:
git commit -am "Very nice and not funny commit message"
在那之后,您不能只做git push
,因为您的本地分支现在与远程分支(带有6个旧提交)有很大不同。
因此,您需要强制执行推送以覆盖远程分支上的实际分支:
git push -f