【发布时间】:2012-09-24 14:00:00
【问题描述】:
因此,我在 github 中创建了一个项目,但由于“推送”命令期间出现错误,需要我先执行“拉取”操作,因此我无法将本地更改推送到我的原始仓库。那么问题是“拉”不断覆盖我所有的本地提交。
示例如下:
在 github 上有一个项目 A(remote = 上游),我将它分叉到我自己的项目中(remote = origin)。然后我创建了一个分支“branch_a”,在其中添加了我所有的补丁更改并将这个分支推送到我的远程源仓库。我最终用多个提交搞砸了整个过程,所以我需要将我的提交压缩为一个,以便提交拉取请求以将我的更改发送到项目 A。尝试压缩我的提交并与上游存储库同步如下:
git rebase -i 上游/主控
我看到了 4 个提交并选择了我想要的一个并删除了其他的
git push origin branch_a
收到错误:
! [拒绝] branch_a -> branch_a(非快进) 错误:未能将一些引用推送到“https://github.com/#####/#####.git” 为防止您丢失历史记录,拒绝了非快进更新 在再次推送之前合并远程更改(例如“git pull”)。见 'git push --help' 的'Note about fast-forwards' 部分了解详细信息。
运行拉取命令:
git pull origin branch_a
收到的消息:
- 分支 branch_a -> FETCH_HEAD 通过递归进行合并。 libpex/安装 | 364 +++++++++++++++++++++++++++++++++++++++++++++++++++ ++++ 1 个文件已更改,364 次插入(+),0 次删除(-) 创建模式 100644 libpex/INSTALL
本地提交被 pull 命令完全覆盖(我尝试删除此文件大约 10 次,但它不断返回)。
所以现在我又回到了 4 次提交,我无法终生将正确的提交推回我的原始仓库。我该怎么办?
【问题讨论】: