繁体   English   中英

Git rebase将当前分支留在远程后面,想要更清晰的提交历史记录

[英]Git rebase leaves current branch behind remote, want a cleaner commit history

我将提交内容从本地Git存储库定期上传到GitHub,但是提交内容过载,并且在确定它们无用并且破坏了历史记录之后,我尝试使用rebase -i将一些提交内容压缩在一起。

它似乎可行,所以我想将更改的提交推送到GitHub并在此处更改历史记录。 我得到的是我当前分支的尖端在后面。 建议的操作是从远程存储库中提取更改,但是我不希望从远程存储中获取更改。 我只想将本地拥有的内容发送到GitHub。

您能给我解释一下情况,帮助实现我想要的吗?

编辑某些推送的分支是不可行的,但是您可以这样做。

也许您的提交日志如下所示:

o 250a32c added new information <master> <origin/master>
|
o c4f5265 added new information
|
o 168d674 added new information
|
o ca708cd some other commit

现在,您可以使用交互式变基压缩一些提交。

git rebase -i ca708cd

将打开一个编辑器,您可以在将250a32cc4f5265提交到squash之前更改pick

之后,您的仓库如下所示:

o 3e86bc4 added new information <master>
| o 250a32c added new information <origin/master>
| |
| o c4f5265 added new information
| |
| o 168d674 added new information
|/
o ca708cd some other commit

现在,您需要使用--force将分支推送到github,因为您的master和master / origin不同步,并且无法快速转发。

git push --force origin master

在公开发布提交后重写历史记录不是一件好事。 想象其他人克隆了您的存储库。 如果事后更改它,它们的历史记录将与它们的来源不符(您的github存储库)。

您有几种解决方案,可以:

  • 尝试继续并更改github上的仓库。 一种可能是完全丢弃您在github上不喜欢的分支,然后将您安排好的本地分支推送到github(silvio的“ --force”是一种更快的选择)。

  • 完全删除该存储库,然后再次将本地存储库克隆到github。

  • 与不太漂亮的提交一起生活(首选解决方案)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM