当前位置:   article > 正文

Git入门——使用ssh协议上传代码_使用ssh推送代码到对应git分支

使用ssh推送代码到对应git分支

上一节提到了使用https协议提交代码,本节将介绍如何使用ssh协议上传代码到远程仓库。

创建码云仓库

创建码云仓库首先要注册码云账号,登录账号后,通过3个简单的步骤就可以快速地完成一个远程仓库的创建:
在这里插入图片描述

创建本地Git仓库

有了远程仓库,我们还需要创建本地git仓库,当然,不一定要新建一个目录,也可以将现有的目录进行git初始化,初始化后,本地仓库会新增一个.git文件(该文件为隐藏文件)。

进入要初始化的目录,右键选择开启Git Bash(首先要下载Git软件),输入 git init 命令即可完成本地git仓库初始化:
在这里插入图片描述

实现代码上传

在刚刚完成创建远程仓库的操作后,仓库主界面会出现一个入门教程,

在这里插入图片描述
在本地git仓库打开Git bash,首先进行用户信息的配置:

git config --global user.name "your name"
git config --global user.email "your email"
  • 1
  • 2

–global的作用设置为全局属性。
用户名和邮箱都可以随意填写。但是如果要让别人可以在gitee查看上传者的账号信息,邮箱就要为设置账号的主邮箱或提交邮箱。如果没有设置主邮箱,系统会给一个提交邮箱,可以在gitee->个人主页->个人设置->邮箱管理中设置和查看:
在这里插入图片描述

配置完个人的提交信息后,使用 git config -l 可以查看所有的配置参数:
在这里插入图片描述
下一步就是将文件加入到git仓库的暂存区,并提交到本地版本库(本地仓库),最后上传(上传前还需设置远程仓库的地址)。
使用命令:

git add -A
git commit -m "xxxx"
git remote add origin git@gitee.com:xiaohui_super/ssh_push_test.git
git push -u origin master
  • 1
  • 2
  • 3
  • 4

git add -A 或 git add . 是选中目录里的所有文件,也可以通过文件名指定某一个或几个文件;git commit -m “xxx” 用来提交,-m 指定提交的信息;git remote add origin xxx 的作用是添加远程仓库地址;最后一项 git push 为上传文件,-u/–set-upstream的作用是设置上流分支,以后上传时,默认使用-u后面的分支作为上传目标分支(以后直接用git push即可完成上传),origin是远程仓库的别名(由git remote add 设置),master为主分支,新建仓库时的默认分支。

在这里插入图片描述
ssh与https有所不同,使用https时上传时,按照入门教程输一遍,最后填写一个用户名和密码的验证就能上传代码,使用ssh却不行,如果不进行任何ssh配置就直接上传,bash命令行会出现拒绝访问(Permission denied)的提示。通过提示,我们可以得知访问权限和公匙(Publickey)有关。

设置SSH密匙

gitee用户的SSH公匙可以在 gitee->个人主页->个人设置->SSH公匙 设置和查看,下图显示我还没添加任何公匙,所以是无法通过ssh上传代码的。
在这里插入图片描述
接下来我们来简单地创建一个SSH公匙,先在命令行输入:

ssh-keygen -t rsa -C "comment"
  • 1

ssh-keyen的作用是生成密匙对(公匙和密匙),-t 用来指定加密的类型,-C 后面加一段描述性字符串,网上很多人选择填邮箱,它真正的作用是让我们更好地去区分不同的密匙。
在这里插入图片描述
使用该命令后,命令行会先询问我们密匙文件保存位置(默认用户目录/.ssh/xx/),也可以自己手动设定,按回车可以使用默认配置;创建密匙目录后,命令行接着询问我们要设置的密码,回车则表示无密码(输入两次);最后还会生成一个key fingerprint 和 key’s randomart image,这些暂时不用去深究。
作为第一次使用ssh-keygen的我,就不用去管那么多操作了,直接一直回车到结束就行。

当看到这个随机图形时,基本说明密匙对生成成功,打开密匙存放的目录,默认为 “用户主目录/.ssh/id_rsa,但我这没有id_rsa,这都不重要,只要有公匙文件id_rsa.pub和私匙文件id_rsa就行了。
在这里插入图片描述
接着打开公匙文件id_rsa.pub(用记事本或其他文本编辑软件),复制里面的密匙内容:
在这里插入图片描述
将公匙内容粘贴到gitee的SSH公匙粘贴区,同时给它取个名字。
在这里插入图片描述
点击确定后输入密码,公匙就添加成功了。
在这里插入图片描述
回到Git bash,可以使用下面的命令测试ssh功能:

ssh -T git@gitee.com
  • 1

在这里插入图片描述
成功授权!最后接着上次失败的上传:
在这里插入图片描述
什么,被拒绝了?原来是远程仓库的内容和本地不同(之前我已经向远程仓库上传过文件),由于这是一个新仓库,远程仓库的数据都不重要,所以我直接用 -f 进行强制推送【除非真的不想要远程仓库的数据了,不然千万别使用强制推送】,强制推送是很危险的。

但最后也是上传成功了。


为什么不能用 git push -f

下图是我对远程仓库的所有操作,记录中出现了头像为”黄“的用户,这是因为我在git config 时使用了其他账户的邮箱地址,所以上传的作者显示为该账户,由此看来邮箱地址的设置也是需要注意的。
在这里插入图片描述
讲了些题外话,
上面的图片显示我上传了三次文件到master分支,但由于我第三次上传时使用了强制推送,导致只剩下了最后一次提交记录(下图),之前的文件内容也没了,提交作者也只剩一人。远程仓库被活生生覆盖了,由于目前本人对git了解不深,暂时不知道有没有方法能修复 -f 带来的破坏。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/695305
推荐阅读
相关标签
  

闽ICP备14008679号