关于git push的错误
实际情况
- 从
git log
的输出我们可以看到:* df1c4cf (HEAD -> main) 更新文章标题为"AI笔记15"... * 3679ec9 (origin/main, origin/HEAD) 新增多篇文章...
- 这表明:
- 本地分支和远程分支确实有不同的提交历史
- 本地分支比远程分支超前一个提交
- 这种情况下,普通的
git push
会被拒绝,因为远程分支有本地没有的提交
正确的解决方案
- 应该先尝试:
git pull --rebase origin main
这样可以先获取远程更改,然后将本地更改基于最新的远程代码重新应用
-
如果 rebase 过程中有冲突,需要解决冲突后再推送
- 或者使用:
git pull origin main
这会创建一个合并提交,然后再次推送
经验教训
- 在推送前应该先拉取远程更改
- 遇到推送失败时,要检查本地和远程的提交历史差异
- 使用
git log --oneline --graph --all
可以清晰地看到分支差异 - 强制推送(
git push -f
)虽然能解决问题,但不是最佳实践,可能会丢失远程的更改