知了常识站
白蓝主题五 · 清爽阅读
首页  > 电脑基础

git提交代码推送不上?别急,这几个常见原因你得知道

Git提交代码时,遇到“推不上去”的情况太常见了。明明本地commit成功了,一执行git push就卡住,甚至弹出一堆英文报错,看着就头大。其实大多数问题都有固定套路可查。

远程分支有更新,需要先拉取

你在写代码的时候,同事可能已经push过新提交。这时候你的本地分支就落后了,Git为了防止覆盖别人的改动,会拒绝你的推送

看到类似rejected - non-fast-forward的提示,基本就是这个原因。解决办法很简单,先拉取最新代码:

git pull origin main

如果合并时出现冲突,处理完再add、commit,然后重新push。

分支名写错了

有时候手快,分支名打错一个字母,比如把main写成mian,Git会提示找不到远程分支。

确认当前分支:

git branch

查看远程分支列表:

git branch -r

确保你推的是对的分支,比如:

git push origin main

没权限推送

公司项目或私有仓库,不是谁都能随便push的。如果你连不到远程仓库,或者提示Permission denied,可能是SSH密钥没配好,或者账号没被加入协作者。

检查是否用了正确的SSH地址:

git remote -v

如果是HTTPS方式,可能需要重新输入用户名密码;SSH方式则要确认~/.ssh/id_rsa.pub有没有加到GitHub或GitLab账户里。

网络或代理问题

在公司网络下,有时会因为代理设置导致连接不上Git服务器。尤其是用GitLab或自建仓库时,容易超时。

可以尝试ping一下仓库地址,或者临时关闭代理:

git config --global --unset http.proxy

也有可能是防火墙拦了SSH端口(默认22),这时候可以改用HTTPS协议临时顶一下。

本地没关联远程分支

新建分支后直接commit,但没设置上游分支,push时就会失败。Git不知道该推到哪去。

第一次推送时可以用:

git push -u origin feature/login

加上-u参数,就把本地分支和远程关联起来了,下次直接git push就行。

提交记录乱了,强行推送危险

有人图省事,想用git push --force硬推,虽然能解决问题,但会覆盖别人代码,团队协作中非常危险。

除非你明确知道自己在做什么,否则建议用--force-with-lease,它会检查别人有没有新提交,相对安全些。

遇到推不上去的情况,别慌,按顺序排查:分支对不对、权限有没有、网络通不通、本地是不是落后了。多数问题几分钟就能搞定。