目录
什么是git
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
git是分布式版本控制工具的代表。
什么是版本控制:
- 版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
- 版本控制透过文档控制(documentation control)记录程序各个模组的改动,并为每次改动编上序号。
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
Git的功能特性:
从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
1、查看邮件或者通过其它方式查看一般开发者的提交状态。
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,然后通知所有开发人员。
优点:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作。大部分操作在本地完成,不需要联网。
- 完整性保证。
- 分支操作非常快捷。
- 尽可能添加数据而不是修改或删除数据。
缺点:
- 资料少(起码中文资料很少)。
- 学习周期相对而言比较长。
- 不符合常规思维。
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
版本控制工具应该具备的功能
协同修改
■多人并行不悖的修改服务器端的同一个文件。
数据备份
■不仅保存目 录和文件的当前状态,还能够保存每个提交过的历史状态。
版本管理
■在保存每 一个版本的文件信息的时候要做到不保存重复数据以节约存储空间,提高运行效率。这方面SVN采用的是增最式管理的方式,而Git采取了文件系统快照的方式。
权限控制
■ 对团队中参与开发的人员进行权限控制。
■ 对团队外开发者贡献的代码进行市核一一Git 独有。
历史记录
■ 查看修改人、修改时间、修改内容、日志信息。
■ 将本地文件恢复到某一个历史状态。
分支管理
■ 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
Git安装与配置
安装教程:https://www.cnblogs.com/minRose/p/10286473.html
官网地址:https://git-scm.com/download/win
建议使用谷歌浏览器下载,我使用360浏览器下载非常慢,使用谷歌浏览器就快多了。
安装完成后右键菜单会出现Git Bash Here 和 Git GUI Here
Git结构
git代码托管中心任务:维护远程库
本地库和远程库:团队内部协作和跨团队协助
Git命令行操作
本地库初始化
命令:git init
效果:初始化一个新的命令仓库 Initialized empty Git repository
注意:git初始化尝试的命令仓库是一个隐藏的资源
.git目录下存放的是本地库相关的子目录和文件,不要删除,也不要胡乱的修改。
设置签名
形式:
- 用户名:aaa
- Email地址:ajofjaof@aa.com
作用:区分不同开发人员的身份
辨析:这里设置的签名和登录远程库(代码托管中心)的账号和密码没有任何关系。
命令:
命令分为两个级别:
1、项目级别/仓库级别 :仅在当前本地库范围内生效
- git config user.name aaa
- git config user.email ajofjaof@aa.com
2、系统用户级别:登录当前操作系统的用户范围
- git config --global user.name aaa
- git config --global user.email ajofjaof@aa.com
优先级:就近原则,项目级别优先于系统用户级别,如果只有系统用户级别就以系统用户级别为准,如果二者都没有则是不允许的。
例子:
在.git文件夹中config中存放了刚刚设置的签名。可以使用cat去查看
创建系统用户级别的签名在查看时需要到用户目录下查看,而且.gitconfig是隐藏文件
添加提交及查看状态操作
查看状态 git status
创建一个文件,然后将文件添加入库
如果想要回到之前的状态,使用git rm --cached 文件名 就可以了
git commit 文件名 :将文件进行提交,将会跳转到一个界面,在这个界面可以对提交写注释,这其实是一个vim编辑器
使用shift+;,然后输入set nu能够显示行号
输入的内容保存,第一次提交会作为一个根提交(root-commit),后面的d249083可以的作为一个粗略的版本号
1 file changed, 79 insertions(+) 这个就是刚刚提交的信息状况
提交结束之后,输入git status之后就会显示没有什么可以提交的,工作树已经清空
如果对已经提交的文件做出修改,继续查看状态就会发现改变对于commit
一起学习,一起进步 -.- ,如有错误,可以发评论