简介

省流:要用再学!这里给出参考教程

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(所以操作为linux相关)

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

img

基本操作

Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull

img

  • 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
2
3
4
5
Host github.com	#主机别名
#HostName github.com #主机地址(ip)
#Port 22 #(端口号)
User git #用户名
IdentityFile "C:\Users\lenovo\.ssh\github" #私钥文件路径

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
2
3
4
5
6
7
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:Elapsedf/test.git
git push -u origin main

注意将test.git改成你自己得repo的名字!

bug

  1. 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即可