








之前一直手动将代码推送到cnb上,有点麻烦,所以就想着用git的方式推送,今天就尝试一下,并且记录。
整个过程踩了两个坑:一个是凭据权限不够报 403,一个是本地与远程历史不一致被拒绝推送,最后用 --force 解决。下面把完整流程记录下来。
去 git-scm.com 下载安装 Git,安装时保持默认选项即可。装好后打开终端验证:
git --version
能输出版本号就说明安装成功。
登录 cnb.cool,点击新建仓库,填好仓库名(比如 astro-blog),创建完成后会得到一个仓库地址,类似:
https://cnb.cool/你的用户名/仓库名.git
这个地址就是等下要关联的远程仓库。
首次使用 Git 建议先设置用户名和邮箱,这样提交记录里才会显示正确的作者:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
在项目根目录打开终端,先初始化本地仓库(如果项目还没有的话):
git init
然后把本地仓库和远程仓库关联起来:
git remote add origin https://cnb.cool/你的用户名/仓库名.git
关联后可以用 git remote -v 查看是否成功,会输出 fetch 和 push 两个地址。
git add .
git commit -m "首次提交"
git push -u origin main
-u 的意思是设置上游分支,以后在本地直接 git push / git pull 就行,不用再写 origin main。
第一次执行 git push 时,终端直接报错:
remote: Your token does not have repo-code:rw permission to push this repository.
fatal: unable to access 'https://cnb.cool/xxx/astro-blog.git/': The requested URL returned error: 403
意思是当前使用的凭据没有该仓库的 repo-code:rw(代码读写)权限。
排查思路:
Windows 凭据管理器打开方式:控制面板 → 凭据管理器 → Windows 凭据,找到
git:https://cnb.cool相关的条目删掉即可。
删掉凭据后重新推送,会弹出登录窗口,用有权限的账号登录就能通过了。
权限解决后再次推送,又报错:
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://cnb.cool/xxx/astro-blog.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally.
这是因为远程仓库有本地没有的提交(比如网页端初始化自动生成的 README,或者之前推送过其他内容)。Git 为了安全,不允许直接覆盖远程历史。
解决方式有两种:
方式一:正常合并(推荐)
git pull origin main --rebase
git push -u origin main
先把远程的提交拉下来接到本地提交后面,再推送。
方式二:强制覆盖(慎用!)
git push -u origin main --force
--force 会用本地内容直接覆盖远程,远程上原有而本地没有的提交会永久丢失。只有在确认远程的提交都没价值时才建议使用。
我当时确认远程只有初始化时自动生成的无用文件,所以直接用了方式二。
整个流程其实很简单,核心就三步:关联远程、本地提交、推送。真正花时间的是两个坑:
--force 能解决但会丢远程数据,能合并就尽量合并学会之后,以后在 VS Code 里写完代码,直接在源代码管理面板点一下提交和推送,就不用再手动上传了。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。