Git分布式版本控制系统
联网运行,支持多人协作
基于服务器,客户端的运行模式
断网后,支持离线提交本地版本更新
服务器故障,可使用客户端的备份进行恢复
客户端是服务器的完整备份,并不是只保留文件的最新版本
# 什么是Git
是一个开源的分布式版本控制系统,最先进最流行 高效的处理从小到大的项目版本管理
特点
直接记录快照,而非差异比较
所有的操作都是本地执行
Git记录快照
缺点:
占有磁盘空间大 优点:版本切换非常快,每个版本都是完整的文件快照,切换版本直接恢复目标版本的快照就可以
Git中绝大多数操作
只需要访问本地文件和资源
断网后依旧可以在本地对项目进行版本管理
联网后,把本地修改的记录同步到云端服务器就可以
Git三大区域
工作区(写代码)、暂存区(临时存储)、Git仓库(存储所有完整备份)
Git的三种状态
已修改 modified:已修改的文件,但没有将修改的结果放到暂存区
已暂存 staged:对已修改文件的当前版本做了标记,使之包含在下次提交的列表中(文件修改并放入了暂存区)
已提交 commited 文件已保存在本地的Git仓库中
Git工作流程
1.在工作区修改文件
2.将你想要下次提交的更改进行暂存
3.提交更新,找到暂存区的文件,将快照永久存储到Git仓库
Git使用
注册账号github.com/
设置邮箱和用户名
配置用户信息
安装完Git后,设置自己的用户名和邮件地址
git config --global user.name "用户名"
git config --global user.email "邮箱"
注意:使用了--global,该命令只需要运行一次就可以永久生效 (配置了用户名和邮箱地址,会被写入到c:/users/用户名文件夹/.gitconfig文件中,该文件是Git的全局配置,配置一次永久生效)
检查文件状态 git status
以简洁的方式显示文件状态 未跟踪的文件前面有红色的 git status -s
跟踪文件(把文件存到暂存区) git add 文件名、git add . 暂存区一次性添加全部文件
对提交文件进行修改git commit -m "文件修改"
撤销对文件修改
git checkout -- index.html
取消暂存的文件
git reset HEAD -- 要移出的文件名称
跳过使用暂存区域
git commit -a -m '描述信息'
移出文件
从git仓库和工作区同时移出index.js文件 git rm -f index.js
只从git仓库中移出 保留工作区中的文件 git rm --cached index.js
查看历史记录
#所有的提交历史 git log
#只展示最新的两条提交历史 git log -2
回退到指定版本 根据指定的提交ID回退到指定版本 git reset --hard
GitHub
开源的项目托管平台
<https://github.com/>
什么是开源?
开发源代码,代码是公开的,任何人都可以去查看,修改和使用开源代码
开源许可协议
开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利
远程仓库两种访问方式
HTTPS:零配置,每次访问仓库时,要重复输入GitHub账号和密码
SSH:需要进行额外的配置,不需要重复输入GitHub账号和密码(推荐)
基于HTTPS将本地仓库上传到GitHub
将本地仓库和远程仓库进行关联, 并把远程仓库命名为origin
git remote add origin https://github.com/xinglovepeng2019/jxxproject_01.git
将本地仓库的内容推送到远程的origin仓库中
git push -u origin master
如果已经推送过 再次推送 git push
基于SSH将本地仓库上传到GitHub
作用:SSH 本地仓库和GitHub之间免登录的加密数据传输
好处:免登录 数据加密传输
SSH 由两部分组成
id_rsa 私钥文件 存放于客户端电脑中
id_rsa_pub 公钥文件 需要配置到GitHub中
生成SSH key
打开 Git Bash
命令 连续敲3次回车 在C:\users\用户文件夹 .ssh 目录中生成 id_rsa 和id_rsa.pub
ssh-keygen -t rsa -b 4096 -C "邮箱"
配置SSH Key
记事本打开 id_rsa_pub,复制里面内容
浏览器打开GitHub登陆,点击头像--》settings-》SSH and GPG keys-》New SSH key
将 id_rsa_pub文件中的内容,粘贴到key对应的文本框里
title文本框任意填写名称,来标识key从何而来
检测GitHub的SSH key是否配置成功
ssh -T git@github.com
远程仓库克隆到本地
git clone 远程仓库的地址