2

我定期将本地 Git 存储库中的提交上传到 GitHub,但是提交过多,在确定它们没有用处并且只会破坏历史之后,我尝试使用rebase -i将一些提交压缩在一起。

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

你能解释一下我的情况并帮助实现我想要的吗?

4

2 回答 2

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 squash 一些提交。

git rebase -i ca708cd

将打开一个编辑器,您可以将pick提交之前的250a32c和更改c4f5265squash.

在此之后,您的 repo 如下所示:

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

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

git push --force origin master
于 2013-09-04T09:58:27.117 回答
1

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

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

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

  • 完全删除 repo 并再次将本地 repo 克隆到 github。

  • 忍受不那么漂亮的提交(首选解决方案)。

于 2013-09-04T09:59:54.377 回答