1.git基础概念
版本控制:分布式版本控制(git)集中式版本控制(svn)
每个电脑都是一个主机。相互之间可以传送消息。分布式版本控制。也会有一个分布式版本控制系统服务器。服务器就是作为中转。
a可以给服务器推送代码,也可以给b推送。
2.服务器有三种
1)公司自己搭一个服务器
2)github
3)gitee
3.码云网站登录
代码托管平台
注册,记住用户名和设置邮箱
注意:用户名
在自己的git上面和码云平台进行绑定:
4.上传主机ssh公钥到gitee代码托管平台
不是所有的人都能往仓库里面存代码,
本机和gitee使用shh协议进行加密传输,所以要把ssh公钥放到gitee账号,推送本机上的仓库代码到gitee仓库上的时候,ssh会进行密文校验,所以主机的ssh公钥要放到gitee。
ssh协议分为两个部分:加密和解密
公钥(公开的)私钥(自己的)。git用户端会把数据+私钥加密成为密文(加密后的数据推送给gitee)私钥加密,gitee获取到了密文,会解密成为明文,只有gitee知道公钥才能解密,公钥gitee用来解密
检查自己是否有ssh key。
如果没有,创建ssh key
添加公钥到gitee用户
28110047921.png&pos_id=img-ezixWIhL-1714399883381)
5.在gitee创建远程仓库
保存远程仓库地址
6.将远程仓库克隆到本地主机(自己的电脑)
创建一个文件作为本地仓的地址
注意:如果想要把别人的码云仓库克隆到本机,需要添加别人的公钥到远程仓
报错:
代码从工作区,需要add到暂存区,暂存区需要commit到主分支,放到版本库之后需要push到远程仓库
练习:在码云来下来的本地仓,创建文件readme.txt和1.txt推送到码云(要在仓库里面打开bash)
问题:
1.add后出现fatal: pathspec ‘1.txt’ did not match any files
pathspec来指定要操作的文件或目录
pathspec未匹配任何文件的原因:文件不存在,文件路径错误,文件名拼写错误,.gitifnore文件影响
把文件后缀名打开 查看,显示,文件扩展名
2.commit 后出现error: src refspec branch does not match any
error: src refspec master does not match any
error: failed to push some refs to ‘1.txt’
7.修改文件,然后把修改提交到Git版本库. git add *
8.版本回退(在版本库里面的版本)
首先,怎么查看版本呢
git log 打印日志。查看到版本号,只能查看版本库里面的操作历史
然后,git reset --hard +版本号,就回退到了版本1
原理:
在版本库里面有一个指针HEAD,这个指针指向最新的版本。当我们进行版本回退的时候,指针久指向别的版本,完成指针的回退
注意:只要你push远程仓,你的版本就被上传。当你版本回退的时候,远程仓里面也会有个head指向版本,也会同步回退。
问题:
$ git push -u origin master
To https://gitee.com/o-pang-hui/20240428-test.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘https://gitee.com/o-pang-hui/20240428-test.git’
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: ‘git pull …’) before pushing again.
解决方案:
9.删除文件
文件没有提交远程仓,但是文件现在已经在分支上,add+commit
在文件管理器中删除文件,工作区和版本库的文件不一致,git status,会告诉你文件被删了
这个时候,你需要 git rm test.txt(把版本库的删了),然后commit,再推送到远程仓