Git 没有所有提交历史的远程本地分支更新

Git local branch update on remote without all commit history

我有一个正在跟踪的本地开发分支 origin/development。

两者都有相同的 HEAD 提交。

现在,我已经将开发分支签出到一个新分支 (task1) 中,并在几周内进行了 20 次提交。

如果我在开发分支上做 "git merge task1"。我现在在我的开发分支中获得了所有 20 个提交,我不想将其推送到 origin/development。

我希望 origin/development 将我所有的 20 个提交显示为单个提交 "Implemented Task 1"

我怎样才能做到这一点?

所有这些技术都可以在主题“Rewriting History”下的 Git 书中找到。注意:所有这些都有点危险,所以在您对自己正在做的事情有信心之前,您可能想要创建本地存储库的第二个克隆(您可以使用不同的名称直接克隆本地存储库),然后尝试您的命令。

如果出现问题,只需再次克隆即可。

当你有一些有用的东西时,记下命令并删除你的第二个克隆。

您要查找的命令是 rebase,带有选项 --interactive。在编辑器中,您可以选择提交并 "squash" 它们:

s, squash = use commit, but meld into previous commit

相关: