Git and SSH
简介
省流:要用再学!这里给出参考教程
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(所以操作为linux相关)
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
基本操作
Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull
git init - 初始化仓库。
git add - 添加文件到暂存区。
git commit - 将暂存区内容添加到仓库中。
git status - 查看状态
git rm:删除
git log:查看提交信息
远程操作相关
git remote:远程仓库操作
git clone:下载
git Push:上传远程代码并合并
git Pull:下载远程代码并合并
ssh连接
连接github
github token: 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
关于ssh
SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。[2]使用 SSH 协议可以连接远程服务器和服务并向它们验证。连接远程仓库时无需输入密码而且能实现对 github 的流畅访问。除此之外我还用 ssh 协议成功在 Windows Terminal 中连接上了自己的远程服务器。
ssh是一对密钥(pub结尾为公钥,没有则为私钥)
生成ssh密钥
ssh-keygen -t rsa -C "your emmil"
自定义密钥
$ ssh-keygen -t rsa -C “your email” -f id_rsa_xx
ssh调试
ssh -vT git@github.com
可以显示具体连接的各种详细信息
关于permisson denied
2.指定私钥
如果公钥私钥不是默认名(id_rsa id_rsa.pub), 在把公钥放置到远端服务器的authorized_keys中或者gitlab中,直接ssh连接是失败的,提示输入密码
但密码怎么输入都不对,这时要考虑是私钥没取对
需在config中指定 即IdentityFile ~/.ssh/admin
注意,此处是私钥,不是公钥
再测试,即成功
1 | Host github.com #主机别名 |
3.上述操作仍然失效
考虑卸载SSH重装!
服务器免密连接
实际上和连接github同理,就是在本地生成一个私钥和公钥,然后把公钥上传到服务器上即可(不需要更改)(authorized_keys上)
注意自己生成的ssh不要设置密码,这样登入才是“免密”
SSH无密码登录:只需两个简单步骤 (Linux) - Linux大神博客 (linuxdashen.com)
SSH KEY
inux系统有一个钥匙环(keyring)的管理程序.钥匙环受到用户登录密码的保护.当你登录Linux系统时,会自动解开钥匙环的密码,从而可访问钥匙环.SSH密钥的密码也可存储在钥匙环.所以初次使用SSH密钥登录远程Linux服务器时需要输入一次SSH密钥的密码.而将来使用SSH密钥登录时不再输入密码.Ubuntu的钥匙环程序是seahorse.
SSH密钥就好比是你的身份证明.远程Linux服务器用你生成的SSH公钥来加密一条消息,而只有你的SSH密钥可以解开这条消息.所以其他人如果没有你的SSH密钥,是无法解开加密消息的,从而也就无法登录你的Linux服务器.
Connection closed by remote host
Connection closed by 20.205.243.166 port 22
一般而言,是因为现在github犯病,ssh容易连不上,或许可以尝试https连接,然后配置对应的vpn结点进行尝试
Github使用git
当你创建一个repo时,官方会给出对应文档,按照文档进行下列操作即可!
1 | echo "# test" >> README.md |
注意将test.git
改成你自己得repo的名字!
bug
- Updates were rejected because the remote contains work that you do
指的是你本地仓库不存在远程仓库的东西,因为Git的原意是版本管理,每一个repo在本地都有固定的仓库,但是我们可能会在不同的本地仓库上传至同一个repo
解决方法1:先将远程仓库pull下来,再一并push
Git 报错 Updates were rejected because the remote contains work that you do_很萌の萌新的博客-CSDN博客
解决方法2:将你要上传的文件复制到该远程repo对应得本地仓库中,再进行push即可