博客开发中的一些错误和解决方案

By pocaster

关于git push的错误

实际情况

  1. git log 的输出我们可以看到:
    * df1c4cf (HEAD -> main) 更新文章标题为"AI笔记15"...
    * 3679ec9 (origin/main, origin/HEAD) 新增多篇文章...
    
  2. 这表明:
    • 本地分支和远程分支确实有不同的提交历史
    • 本地分支比远程分支超前一个提交
    • 这种情况下,普通的 git push 会被拒绝,因为远程分支有本地没有的提交

正确的解决方案

  1. 应该先尝试:
    git pull --rebase origin main
    

    这样可以先获取远程更改,然后将本地更改基于最新的远程代码重新应用

  2. 如果 rebase 过程中有冲突,需要解决冲突后再推送

  3. 或者使用:
    git pull origin main
    

    这会创建一个合并提交,然后再次推送

经验教训

  1. 在推送前应该先拉取远程更改
  2. 遇到推送失败时,要检查本地和远程的提交历史差异
  3. 使用 git log --oneline --graph --all 可以清晰地看到分支差异
  4. 强制推送(git push -f)虽然能解决问题,但不是最佳实践,可能会丢失远程的更改
Tags: Public