【发布时间】:2023-01-10 02:03:54
【问题描述】:
我回到了几周前(假期前)我正在处理的一些代码。我根据合并请求中留下的一些 cmet 进行了更改。
我去推送我的更改,但出现错误:
! [rejected] my_branch -> my_branch (non-fast-forward)
error: failed to push some refs to '<remote>:my_repo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
我认为这是我在 rebase 后尝试推送时收到的消息(需要强制推送);但是,我不记得变基(我可能有,只是不记得了)。
当我真的不知道我在推动什么时,我会犹豫是否强制推动。
所以我的问题是:有没有办法检查我的分支机构(特别是我的本地分支机构)是否已重新定位?除了 rebase 之外,是否还有其他可能导致此错误的原因(如果没有,那么我可能会假设我几周前刚刚做了 rebase,并且强制推送可能是安全的)?关于如何安全处理这种情况的任何其他建议?
【问题讨论】:
-
“我认为这是我在 rebase 后尝试推送时收到的消息(需要强制推送)”- 你应该绝不一般情况下需要强制推送。
-
我想您需要做的是查看本地和远程分支机构的历史记录,看看发生了什么。
-
非快进错误可能是由于您在另一个贡献者刚刚推送不同的新提交时尝试推送新提交。检查它的方法是
git fetch、git diff和git log。补救方法是git pull --rebase或git fetch && git rebase,然后是git push。 -
@0x5453,谢谢——你能详细说明一下吗?评分最高的答案 here 似乎建议在 rebase 之后强制推送。
-
@phd - 这有效,谢谢!我按照您的步骤进行了操作,并且能够正常推送。尽管我仍然认为可能有人希望知道他们是否重新定位(我的主要问题),但请随意将其添加为答案,因为它确实解决了我的问题(并且将来也可能解决其他人的问题)。
标签: git rebase git-rebase