最近想自己写点东西,所以需要搭建一些开发环境,首先就需要挑选版本管理工具,就是今天的主题---git。
git教程:https://www.yiibai.com/git/git-quick-start.html
git使用时有https和ssh两种url
ssh方式不用输入密码设置:https://www.cnblogs.com/lqfxyy/p/5740720.html
https方式不用输入密码设置:https://blog.csdn.net/weixin_40126227/article/details/79087555
http://www.cnblogs.com/tangxin-blog/p/5719686.html
与svn的比较:
svn:集中化的版本控制系统
git:分布式版本控制系统
集中化的版本控制系统需要一个中央服务器,也正是因为这样,一旦这个中央服务器出了故障,或者机器磁盘损坏,那么将丢失所有数据--包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照(版本变更信息什么的都在中心服务器上,难怪每次show log时那么慢,应该是取服务器上拉取版本变更数据了)
分布式版本控制系统,客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份
大部分系统以文件变更列表的方式存储信息,比如svn,这类系统将他们保存的信息看作是一组基本文件和每个文件随时间逐步积累的差异
git更像是把数据看作是对小型文件系统的一组快照。每次提交更新,或在Git中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git不在重新存储该文件,而是只保留一个链接指向之前存储的文件。Git对待数据更像是一个快照流。
Git数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名
git的三种状态:已修改,已暂存,已提交
已修改表示修改了文件,但还没保存到数据库中
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
已提交表示数据已经安全的保存在本地数据库中
对应的git的三个工作区域概念:工作目录,暂存区域,git仓库(本地的)