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
相关:
我有一个正在跟踪的本地开发分支 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
相关: