必须先完成初始化、提交、关联三步,缺一不可:git init 初始化仓库;git add . 和 git commit -m "msg" 提交本地更改;git remote add origin <url> 关联远程仓库;首次推送需 git push -u origin main(或 master)。

本地代码没提交过、远程仓库是空的,直接 git push 会失败——必须先完成初始化、提交、关联三步,缺一不可。
本地仓库没初始化就 push?git init 是前提
很多人跳过这步,直接在项目目录下运行 git add . 或 git push,结果报错:fatal: not a git repository。Git 根本不认这个目录是仓库。
-
git init只需执行一次,会在当前目录生成.git子目录 - 如果项目已有
.git(比如从别处复制来但没删干净),git status可能显示混乱,建议先rm -rf .git再重来 - Windows 下右键菜单里“Git Bash Here”能快速打开终端,避免路径错误
远程仓库地址配错了?用 git remote set-url 改
git remote add origin https://... 配错一次,后续所有 git push 都发往错误地址,还可能因权限问题卡在认证环节。
- 先用
git remote -v确认当前配置,输出应有两行:(fetch)和(push)地址一致 - 改 HTTPS 地址:
git remote set-url origin https://github.com/user/repo.git - 改 SSH 地址:
git remote set-url origin git@github.com:user/repo.git - 如果远程仓库名不是
origin(比如你用了upstream),所有git push命令都要把origin换成对应名字
首次推送新分支必须带 -u 参数
执行 git push origin feature/login 报错 error: The requested upstream branch does not exist,是因为本地分支还没和远程建立跟踪关系。
- 正确命令是:
git push -u origin feature/login,其中-u(即--set-upstream)会把本地分支绑定到远程同名分支 - 绑定后,之后再在这个分支上
git push或git pull就不用写完整参数了 - 如果忘了
-u,后续可用git branch --set-upstream-to=origin/feature/login补救 - 注意:GitHub 默认主分支名已从
master改为main,推送到main时别写错分支名
git push 被拒绝?大概率是远程有你没有的提交
常见报错:! [rejected] main -> main (non-fast-forward)。这不是权限问题,而是远程分支比你本地“新”——比如别人 push 过,或你在网页端改过 README。
- 先执行
git pull origin main(把远程变更合并进本地) - 解决可能出现的冲突(编辑文件 →
git add→git commit) - 再
git push origin main - 想跳过合并、强制覆盖远程(仅限个人仓库且确认无他人协作):
git push --force-with-lease origin main,但--force会丢历史,慎用
最容易被忽略的是:远程仓库创建时勾选了 “Initialize with README”,导致远程已有提交,而你本地 git commit 是第一次提交,两个提交树完全不相交——这时 git push 必然失败,必须先 git pull --allow-unrelated-histories 合并,再推。


















