
文章从最基础的“本地仓库初始化”“GitHub新建仓库”讲起,到关键的“SSH密钥配置(免密推送)”“关联远程仓库的命令怎么敲”,再到最后的“执行push的完整步骤”,每一步都拆得明明白白——比如git remote add origin后面的地址在哪找、git push -u origin main里的“-u”有啥用,连命令里的参数含义都讲清楚。更贴心的是,还整理了新手最常犯的5个错误(比如仓库名写错、分支不一致),每个错误都给了对应的解决方法。
不管你是刚接触Git的小白,还是试过几次没成功的“踩坑选手”,跟着这篇超详细步骤走,保证能顺顺利利把本地代码传到GitHub,再也不用对着终端报错发呆啦!
你是不是试过打开终端输git push
,结果弹出“permission denied”?或者明明复制了GitHub的仓库地址,关联时提示“remote origin already exists”?我去年帮刚学前端的表妹弄这个,她盯着终端红报错哭丧脸说“这玩意儿比背CSS属性还难”——其实不是你笨,是没人把步骤拆到“连小白都能看懂”的程度。今天我把自己踩过的坑全扒出来,一步一步教你,保证你跟着做能把本地代码顺利推到GitHub。
先把Git和GitHub的“基础关系”理清楚,再动手
很多人上来就输命令,连“本地仓库”“远程仓库”是什么都没搞懂——这就像没学过开车就上高速,不撞墙才怪。我用人话给你掰碎了讲:
你电脑里放代码的文件夹,就是“本地仓库”(相当于你手机里的照片相册);GitHub上新建的仓库,是“远程仓库”(相当于微信朋友圈的“仅自己可见”相册);Git就是帮你把本地相册里的照片“发”到朋友圈的工具——三者的关系搞明白了,后面操作就不会懵。
那第一步该做什么?先初始化你的本地仓库。打开你电脑里放代码的文件夹(比如叫“my-first-project”),右键选“Git Bash Here”(没这个选项?那你得先装Git,官网下载了无脑下一步就行),然后输一句git init
——这步是告诉Git:“ 我要把这个文件夹当成我的代码仓库,你帮我管着啊!”
我第一次做的时候犯了个傻:先去GitHub建了仓库,再回来初始化本地——结果关联的时候提示“远程仓库已经存在”,折腾了半小时才搞明白:必须先初始化本地仓库,再关联远程仓库,顺序别搞反。
关键中的关键:配置SSH密钥,再也不用输密码
你有没有过这种经历?输完git push
,弹出来要输GitHub账号密码,输了三次都错,最后锁了账号?或者提示“SSH key not found”?我之前帮朋友弄的时候,他因为这个差点把电脑砸了——其实解决办法超简单:配置一次SSH密钥,以后push都不用输密码。
我把步骤拆到“连小学生都能看懂”:
ssh-keygen -t rsa -C "你的GitHub邮箱"
(比如ssh-keygen -t rsa -C "xiaoming@163.com"
),然后按三次回车——别问为什么按三次,照做就行!我第一次非要改密钥保存路径,结果找不到文件,凌晨两点翻遍C盘才找着。 .ssh
文件夹(找不到?打开“显示隐藏文件”),进去找id_rsa.pub
——这个文件里的内容就是你的SSH密钥。 id_rsa.pub
里的内容全选复制,粘到“Key”框里,点Add SSH key就行。 这步要是错了,后面肯定推不上——我表妹之前粘的时候漏了最后一行,结果提示“invalid key”,我帮她检查的时候笑到拍桌子:“你把密钥当作文摘抄啊,还漏句尾?”
最后一步:把本地代码“推”到GitHub
现在终于到了最激动的环节!先确认你已经在GitHub新建了仓库(注意:别勾“Initialize this repository with a README”——勾了的话,远程仓库会有个README文件,本地没有,push的时候会冲突)。
来,跟着我输命令:
git@github.com:
开头的地址),回到Git Bash输git remote add origin 你复制的地址
——比如git remote add origin git@github.com:xiaoming/my-first-project.git
。这里的“origin”是远程仓库的“小名”,你也可以叫“github”“cloud”,但大家都用origin,跟着用省得记混。 git add .
——注意那个“.”,是指“当前文件夹里的所有文件”,别漏了!这步相当于你把手机里的照片选进“发朋友圈”的界面。 git commit -m "第一次提交"
——引号里的内容是你这次提交的说明,比如“初始化项目”“修复了登录按钮bug”,随便写点什么,方便以后自己回看。 git push -u origin main
——这里的“main”是分支名(现在GitHub默认分支是main,不是以前的master了,别输错!)。输完回车,等个几秒钟,要是没报错,打开你的GitHub仓库——恭喜你!本地代码已经乖乖躺在远程仓库里了! 新手最常踩的5个坑,我帮你填好了
我把去年帮人解决的问题整理成了表格,遇到报错直接对着找解决办法:
错误提示 | 犯错原因 | 解决办法 |
---|---|---|
permission denied | SSH密钥没配置/配置错了 | 重新生成SSH密钥,检查id_rsa.pub内容是否粘对 |
remote origin already exists | 已经关联过远程仓库 | 先输git remote rm origin ,再重新关联 |
branch master not found | 分支名输错(默认是main) | 把命令改成git push -u origin main |
fatal: refusing to merge… | 远程仓库有README,本地没有 | 先pull远程内容:git pull origin main allow-unrelated-histories |
nothing to commit | 没加文件到暂存区 | 先输git add . ,再commit |
其实我第一次成功push的时候,盯着GitHub仓库里的代码笑了十分钟——感觉自己像攻克了什么世界难题。你做完也会有这种成就感的!要是遇到什么奇怪的报错,把截图发我,我帮你看看;要是成功了,记得回来在评论区报个喜,让我也沾沾你的快乐~
对了,最后提醒一句:每次修改代码后,要先add→commit→push,顺序别乱——就像你发朋友圈,得先选照片、写文案、再点发送,一步都不能少~
本文常见问题(FAQ)
初始化本地仓库和关联远程仓库的顺序搞反了,怎么办?
很多新手会先去GitHub建远程仓库,再回来初始化本地,结果关联时提示“remote origin already exists”。其实正确顺序是先在本地代码文件夹里输git init初始化,再关联远程仓库。如果搞反了也不用慌,先输git remote rm origin删掉已有的错误关联,再重新用git remote add origin 复制的SSH地址关联就行——我去年帮朋友弄的时候就踩过这坑,删了重新来两步就解决。
配置SSH密钥时按三次回车,为什么不用改路径和设密码?
生成SSH密钥时按三次回车,是用Git默认的路径(一般在C盘用户文件夹下的.ssh文件夹里)和空密码,这样最省心。要是改了路径,后面找id_rsa.pub文件容易迷路;设了密码的话,每次push还要额外输密码,反而麻烦。我第一次生成时想“搞点特殊的”,改了路径结果找不到文件,折腾半小时才找回,后来就老老实实按默认来。
关联远程仓库提示“remote origin already exists”怎么解决?
这说明你之前已经关联过远程仓库了(可能是顺序搞反或重复操作)。解决方法超简单:先输git remote rm origin把已有的关联删掉,再重新输git remote add origin 你复制的GitHub SSH地址就行。我表妹第一次做的时候也碰到这问题,删了再关联直接搞定。
git push -u origin main里的“-u”是什么意思?用了有好处吗?
“-u”是“set-upstream”的缩写,说白了就是把你本地的main分支和GitHub上的main分支“绑定”起来。第一次push用了这个参数,后面再推代码就不用写“origin main”了,直接输git push就行——我之前不知道这个技巧,每次push都要输全命令,后来用了“-u”省了好多打字时间。
输git commit提示“nothing to commit”,是不是哪里漏了?
这个提示说明你没把文件“放进”Git的“暂存区”。得先输git add .(注意那个点,代表当前文件夹所有文件),把要提交的代码加进去,再输git commit -m “备注”才行。我第一次做的时候漏了git add这步,盯着终端红字看了五分钟,补了add命令就好了——现在每次commit前都会先检查有没有add。