删除提交历史而不还原

时间:2018-11-28 17:00:33

标签: git github bitbucket

我创建了一个分支,使用不同的提交多次推送,出于测试目的,我必须部署到服务器,这就是为什么我有很多有趣的提交并推送到该分支的原因。现在我已经完成测试,如何删除以前的提交,我只需要提交一次即可进行PR?

2 个答案:

答案 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