0

因此,我在 github 中创建了一个项目,但由于“推送”命令期间出现错误,需要我先执行“拉取”操作,因此我无法将本地更改推送到我的原始仓库。那么问题是“拉”不断覆盖我所有的本地提交。

示例如下所示:

github上有一个项目A(remote = upstream),我将它分叉到我自己的项目(remote = origin)中。然后,我创建了一个分支“branch_a”,在其中添加了所有补丁更改并将此分支推送到我的远程原始存储库。我最终用多个提交搞砸了整个过程,所以我需要将我的提交压缩成一个,以便提交一个拉取请求以将我的更改发送到项目 A。尝试压缩我的提交并与上游存储库同步如下:

git rebase -i 上游/主

我看到了 4 个提交并选择了我想要的一个并删除了其他的

git push origin branch_a

收到错误:

![rejected] branch_a -> branch_a (non-fast-forward) error: failed to push some refs to 'https://github.com/#####/#####.git' 防止你输历史记录,非快进更新被拒绝 在再次推送之前合并远程更改(例如“git pull”)。有关详细信息,请参阅“git push --help”的“关于快进的说明”部分。

运行拉取命令:

git pull origin branch_a

收到消息:

  • 分支 branch_a -> FETCH_HEAD 递归合并。libpex/安装 | 364 +++++++++++++++++++++++++++++++++++++++++++++++++++ ++++ 1 个文件已更改,364 次插入 (+),0 次删除 (-) 创建模式 100644 libpex/INSTALL

本地提交完全被 pull 命令覆盖(我尝试删除此文件大约 10 次,但它不断回来)。

所以现在我又回到了 4 次提交,我无法终生将正确的提交推回我的原始仓库。我能做些什么呢?

4

1 回答 1

1

如果您想告诉 Git 推送您拥有的内容并覆盖目的地的任何内容(这会破坏历史记录,因此请谨慎使用),然后--force向您的推送语句提供:

git push --force origin branch_a

这将导致origin/branch_a分支更新为指向您的本地branch_a分支,无论它是否是快进。 从本地分支或任何其他远程分支无法访问的任何可访问的提交都将在远程存储库中丢失。origin/branch_abranch_a

于 2012-10-03T15:39:57.053 回答