背景:
git项目中需要回退更改,执行git reset --soft xx
回退成功之后,git push之后有报错
尝试强制push,执行git push --force
仍然有报错
代码只能往前提交、push,不能回退、push
背景:
git项目中需要回退更改,执行git reset --soft xx
回退成功之后,git push之后有报错
尝试强制push,执行git push --force
仍然有报错
代码只能往前提交、push,不能回退、push
问题描述:
在Git项目中,使用了git reset --soft xx
回退更改后,尝试使用git push
推送更改时遇到了错误。即使尝试使用git push --force
强制推送,仍然遇到问题。
可能的原因:
git reset
回退提交时,你的本地提交历史与远程的提交历史不再一致。当你尝试推送时,Git会检查这种不一致性并拒绝推送,以防止覆盖远程的提交。git push --force
会强制覆盖远程的提交历史。这可能会导致其他开发者的工作变得复杂或混乱,因为他们可能需要重新同步他们的本地仓库。解决方案:
git fetch
来更新你的本地仓库,查看远程仓库的最新状态。git push --force-with-lease
:这是一个更安全的强制推送方式。它会检查远程仓库的最新状态,并确保你的推送不会覆盖其他人的工作。git push --force-with-lease origin your-branch-name
注意:在使用git reset
和git push --force
时要特别小心,确保你了解这些命令的后果,并与团队成员进行充分的沟通。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
你原先的版本是 v0,提交几次之后到了 v1,然后发现有问题,reset 回到 v0,修好之后在提交,此时的版本是什么?
不是 v1,而是 v1'。(或者你理解成 v2 也行)
v1' 和 v1 是两个不同的路线,当然不能直接 push。此时你可以选择 push -f,但是不推荐,可能会搞丢中间的提交。
也是因为存在很大风险,所以一些仓库会保护分支,禁止 -f。你后面的错误可能是因为这个导致的。