git和 github是不同的概念
git:(version control system)一个开源的版本控制系统
github:世界上最大的在线代码托管平台,由Linux之父林纳斯创建,由于核心部分版本控制是用
git
处理的所以叫github
git init
: 本地初始化新建仓库git status
: 查看本地仓库状态,显示是否有变更的文件git add
: 添加文件到本地仓库git commit
: 将暂存区的文件添加到仓库中git branch
查看本地分支git branch -m 旧分支名 新分支名
在本地修改分支名git diff
:查看的是add
前和add
后的差异为了便于远程管理,每一个远程主机都要有一个指定的主机名
git remote
列出所有远程主机git remote -v
: 查看远程主机信息git remote add 主机名 远程仓库地址
: 添加远程主机git remote rm 主机名
删除远程主机git remote rename 原主机名 新主机名
修改远程主机名字git remote show 主机名
查看该主机详细信息git branch
: 查看自己当前所在分支git remote rm origin
:远程仓库移除起点git
中,origin
和master
分支的理解?
git的远程服务器有多个repository,每一个远程仓库都有多个分支,origin就是远程仓库的指针或者本体名称,说白了就是这个远程仓库叫啥名
master就是本地分支的一个名字,通常情况下是指主分支,这个名字也可以修改成其他名字.
git init
查看下仓库的状态 git status
红色的文件表示此文件未做任何的保存,还处在工作区状态,需要提交到本地仓库
hello.txt
文件添加到本地暂存区: git add hello.txt
再次查看仓库状态
git commit
git push origin main
origin main
远程的主分支,如果第一次提交会要求绑定远程仓库地址,git remote add origin 仓库地址
,使用 git remote -v
查看连接状态
git
配置邮箱和用户名的理解git
远程仓库支持两种协议: SSH
和HTTPS
,
SSH
协议只认机器,也即为:如果使用SSH
操作远程仓库的话,我们需要使用公钥和私钥对来做权限的认证,HTTPS
协议只认账号,HTTPS
操作远程仓库,则需要使用账号密码来做权限的认证无论是公钥私钥对,还是账号密码,仅仅是用来对权限进行认证;但是远程仓库里需要记录这些提交记录是由谁来完成的;所以我们需要给本地的git设置用户名和邮箱,用于从本地仓库向远程仓库提交记录时,在远程仓库会记录下这些操作是由谁来完成的,以及他的联系方式
git config user.name
git config user.email
git config user.name '用户名'
git config user.email '邮箱地址'
这样修改仅仅是修改当前所在项目的个人信息
git config --global user.name "你的名字"
git config --global user.email "邮箱地址"
// 这是在全局修改用户名和邮箱记录
// 或者直接修改全局的.gitconfig 文件, 路径在 /.gitconfigzhon
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址(名字和邮箱都不会进行验证),这样远程仓库才知道哪次提交是由谁完成的。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
首先,配置的用户名和邮箱对push代码到远程仓库时的身份验证没有作用,即不用他们进行身份验证;他们仅仅会出现在远程仓库的commits里。
其次,按正常操作来说,你应该配置你的真实用户名和邮箱,这样一来在远程仓库的commits里可以看到哪个操作是你所为。
最后,这个用户名和邮箱是可以随便配置的(不提倡),如果你配置的邮箱是github里真实存在的邮箱,则commits里显示的是这个邮箱对应的账号;如果配置的邮箱是一个在github里不存在的邮箱,则commits里显示的是你配置的用户名。
服务器端刚使用完 apt install git
安装好git
环境,准备克隆自己的项目进行部署,失败后报错提示
root@mr-j:~/dev# git clone git@github.com:jxiansen/My-blog.git
Cloning into 'My-blog'...
The authenticity of host 'github.com (140.82.112.3)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,140.82.112.3' (ECDSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
大概意思就是: 主机 github.com
的域名真实性无法确定。 github
的主机无法确定自己有正确的访问权限,也就是说自己主机访问 github
服务器的时候,没有携带公钥认证信息。
ssh-keygen -t rsa -C "自己的邮箱地址"
输入后一路回车,就会生成新的 ssh key
文件。
github
账户设置里添加自己主机的认证公钥接下来自己的主机就有 github
访问权限了
git
命令配置用户名和邮箱
git config --global user.name "your username"
git config --global user.email "your email"
git
命令思维导图