我定期将我的本地Git仓库的提交上传到GitHub,但是它被提交过载,在决定它们没有用并且破坏了历史后,我尝试使用rebase -i
来压缩一些提交。
它似乎工作,所以我想将更改的提交推送到GitHub并更改其中的历史记录。我得到的是我当前分支的提示落后。建议的操作是从远程仓库中提取更改,但我不希望远程更改。我只想将我在本地发送给GitHub。
请您解释一下情况并帮助实现我想要的目标吗?
答案 0 :(得分:3)
要编辑某些推送的分支是不行的,但是你可以这样做。
也许您的提交日志如下所示:
o 250a32c added new information <master> <origin/master>
|
o c4f5265 added new information
|
o 168d674 added new information
|
o ca708cd some other commit
现在您可以使用交互式rebase压缩一些提交。
git rebase -i ca708cd
打开一个编辑器,您可以在提交pick
和250a32c
之前更改c4f5265
到squash
。
在此之后,你的回购看起来像这样:
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,因为您的主服务器和主服务器/源服务器不同步且无法快速转发。
git push --force origin master
答案 1 :(得分:1)
在公开发布提交后重写历史记录并不是一件好事。想象一下,其他人克隆了您的存储库。如果您之后更改它们,它们的历史记录将与它们的原点(您的github repo)不匹配。
您有多种解决方案,您可以:
尝试继续更改github上的repo。一种可能性是完全丢弃你在github上不喜欢的分支,然后将你安排好的本地分支机构推送到github(silvio&#39; s&#34; - force&#34;是一个更快的替代方案)。 / p>
完全删除repo并再次将本地repo克隆到github。
与不那么漂亮的提交(首选解决方案)一起生活。