git学习
git学习
Git是什么?
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
简介:
版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。
Git有什么特点?简单来说就是:高端大气上档次!
那什么是版本控制系统?
如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:
过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。
看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。
更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过Email发送一份给她),然后,你继续修改Word文件。一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。
于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?
这个软件用起来就应该像这个样子,能记录每次文件的改动:
版本 | 文件名 | 用户 | 说明 | 日期 |
---|---|---|---|---|
1 | service.doc | 张三 | 删除了软件服务条款5 | 7/12 10:38 |
2 | service.doc | 张三 | 增加了License人数限制 | 7/12 18:09 |
3 | service.doc | 李四 | 财务部门调整了合同金额 | 7/13 9:51 |
4 | service.doc | 张三 | 延长了免费升级周期 | 7/14 15:17 |
这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。
版本控制工具分为:
·集中式版本控制工具:SVN、VSS、CVS、
·分布式版本管理工具:Git、Mercurial、Bazaar…
集中式版本管理工具(SVN):
优点:SVN 属于集中式版本管理控制系统,服务器中保存了所有文件的不同版本,而协同工作人员通过连接svn服务器,提取出最新的文件,获取提交更新。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件CVS,在CVS的功能的基础上有很多的提升同时也能较好的解决CVS系统的一些不足。集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
缺点:
服务器单点故障必须连接在SVN服务器上,否则不能提交、对比、还原等
分布式版本管理工具(Git):
分布式,强调个体
公共服务器压力和数据量都不会太大
离线工作,每个人的本地仓库,大部分操作在本地库完成,不需要联网(SVN做不到)
分支操作非常快捷流畅(重点介绍)
可以吃后悔药, 尽可能添加数据而不是删除或修改数据(删除或修改不容易恢复,而每次添加一个版本,历史版本都有)速度快、灵活, 有能力高效管理类似 Linux内核一样的超大规模项目(速度和数据量)
Git和SVN的区别:
Git 和其他版本控制系统的主要差别在于,Git 只关心文件的整体是否发生变化。而SVN这类版本控制系统则
只关心文件内容的具体差异。
SVN这类系统每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。然而 Git 并不保存这些前后变化的差异数据。
实际上,Git更像是把 变化的文件 作一个快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息(Hash值)并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。
一、安装 (windows上安装Git)
一般我们工作的电脑都是Windows系统,要使用git首先要进行安装。从软件管家或者其他平台找到git的安装包,下载后默认安装即可。
安装成功之后,可以在开始菜单里面找到git:
软件下载地址:https://git-scm.com/downloads
点击 下载Windows的2.26.2
到下一页
下载完成双击进入一下操作
然后 git --version +回车 安装成功
二、指令
首先在github创建一个远程仓库,
想要发送给github项目要先clone
git clone gitHub上的远程地址
然后在克隆下来的文件中通过
git add . //这是选中所有的文件 git add '文件名' //这是选中某一个文件
首先把它们推送到git暂存区
然后通过
git commit -m '描述信息'
发送到本地仓库
然后通过
git push
推送到远程仓库(注意第一次的话需要填写账号和密码,然后在绑定的邮箱中确认)
数据就发送到了远程仓库,我们可以通过远程仓库clone 项目