××××××××××××××版本回退××××××××××××××××
每一次git commit 就把文件的当前状态存储下来,这称为快照;
方便回退到不同的版本状态;
git log
查看版本库不同的版本,日志信息
git log --pretty=oneline
简化日志信息
返回信息结构:
commit的id号(版本号) commit时阐释
git reflog
比上两种命令多要好用,同样是返回版本库不同版本的信息
返回信息结构:
简化版本号 HEAD@{编号} 操作类型:该操作时的信息
注意:操作类型,一般是commit,reset(退回到某个版本库的命令)
注意:HEAD和简化版本号相同,都是版本号,形式不同而已
注意:此命令和git log 不同,在退回到某个版本时,
git log 不会显示全部的日志信息,显示到当前版本位置;
git reflog 会记录每一次
回退到某个版本
git reset --hard 版本号
或者
git reset --hard HEAD@{编号} ------- 通过git reflog 查看
版本号通过git log;git reflog;查看
注意:理解关键字HEAD,相当于指针,指向不同的版本库所在的存储位置
版本如何方便的回退到最新版本位置?
1.第一步,通过git reflog查看
2.第二步,通过git reset --hard 版本号 回到指定版本
如何查看当前所在的版本?
1. 第一种方法:
通过 git log 方式,只会显示从最初的版本到目前版本的日志
2. 第二种方法:
git reset --hard HEAD
HEAD是指针,表示当前所处的版本
××××××××××××××××××××××××××××××××××
修改撤销
1. 撤销暂存区中的修改
git reset HEAD 文件名
这是暂存区没有了该文件,该文件回到了工作区
注意:git reset不仅可以版本回退,还可以撤销暂存区中的修改
HEAD表示最新版本
2. git checkout --文件名
2.1 如果文件在工作区,即将修改撤销,回到最新版本状态
这种情况,直接打开文件修改即可
2.2 文件在暂存区,没什么变化
注意:
即使文件在暂存区也不一定撤销所有的修改,这是可以在工作区再次打开该文件,
修改后,再次add,即可;这是暂存区的该文件是刚刚更改的文件
**********************************
删除文件
*********************************
远程仓库
在服务器中建立仓库,各个客户端可以clone仓库到本地;
git本地仓库 与 github仓库 传输需要ssh加密
本地仓库与github仓库交互,为何要配置ssh文件?
客户端与github之间的通信遵循ssh协议,所以需要在客户端,服务器端设置
1.在git本地设置ssh秘钥
2.在github中将git本地设置的秘钥填写在相应的设置中
这样,github就知道在与哪个用户交互
别人可以克隆你的仓库,但是无法提交修改等;即只读不写
在本地设置git的ssh文件
1.设置ssh key
在home/xubiao目录下查看是否存在.ssh文件
【.ssh表示该文件是隐藏的,在显示时,需要使用ls -a】
在.ssh目录下是否有id_rsa id_rsa.pub文件
如果不存在,创建这两个文件,这是存储秘钥的文件
创建语句: ssh-keygen -t rsa -C 邮箱
一直下一步就可以,不需要输入任何东西;
命令语句在.ssh目录下输入,这是在.ssh目录下生成以上两个文件
2. 将id_rsa.pub中的秘钥填入github中
在github中填写秘钥后,要验证github密码
连接远程仓库?
前提:必须配置ssh
1.远程仓库存在,直接在客户端克隆
git clone 远程仓库地址
此时客户端克隆的仓库已经和远程仓库建立了联系;
提交时,可以直接执行以下语句:
git push -u origin master
-u表示首次提交时,客户端master分支与远程master分支合并
2.在本地创建仓库,服务器中是个空仓库
首先,本地仓库,远程仓库建立联系
git remote add origin 远程仓库地址
其次,提交
git push -u origin master
在于远程仓库建立联系时,有两种方式:
1.通过ssh协议的地址 2.通过https协议的地址
ssh协议方式在提及时不需要输入github的用户名/密码
注意:
不管本地仓库是克隆远程仓库,还是新建本地仓库然后和远程仓库建立连接,
只要是通过ssh协议,在提交时,就不需要输入github的账号/密码
通过https协议,需要输入github的账号/密码
与远程仓库交互有两中协议:https,ssh
建议使用ssh,速度快