在实际情况中,多数情况是团队合作,各自的代码需要共享,要完成这一任务,靠手工是无法完成的,需要借助一系列的工具来完成,这样的工具就称作版本控制工具,常见的有(GIT,SVN)
Git诞生于Linux系统,Git的使用更多的是通过命令行进行的
注意:Git也有图形界面的软件。在计算机科学中,Shell俗称壳,用来区别于Kernel(核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
1、图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系统上的图形化应用程序GNOME、KDE等。
2、命令行shell:通过键盘输入特定命令的方式,调用相应的应用程序,如windows系统的cmd.exe、Windows PowerShell,Linux系统的Bourne shell ( sh)、Bourne Again shell ( bash)等。(bush属于命令行shell的一种)
在window系统下使用bash,需要一个软件,这个软件模拟集成了bash大部分命令。
各个 shell 的功能都差不多, Linux 默认使用 bash ,所以我们主要学习bash的使用。gitbush集成了大多数bush的功能。
右键options--->text(带@符号的表示竖着的字体)
设置窗口options--->window
命令 [-options][参数](中括号表示可写可不写),如:tar zxvf demo.tar.gz
查看帮助:命令 --help
如同Windows下的记事本,vi编辑器是Linux下的标配,通过它我们可以创建、编辑文件。它是一个随系统一起安装的文本编辑软件。
vi编辑器提供了3种模式,分别是命令模式、插入模式、底行模式,每种模式下用户所能进行的操作是不一样的。
输入模式是不能直接切换到末行模式的,必须要先切回到命令模式(按ESC键)
当我们处在编辑模式的情况下,和我们在Windows编辑器的使用相似。
版本控制(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方便的恢复到任意的备份(版本)状态。
举例:我们通常都是手动的重命名一个文件进行备份的,index.html改成index1.html或者index.html.bak等形式,然后这种方式对于单个文件我们还能够管理,但是对于整个项目而言,就会成为噩梦了!!!我们不得不借助于软件来实现。
实现版本控制的软件有很多种类,大致可以分为本地版本控制系统、集中式版本控制系统、分布式版本控制系统(主要学习这个,前面的了解即可)。
借助软件我们可以记录下文件的每一次修改,如下图所示,文件被修改后,记录下了3个版本,这样我们通过版本控制系统(软件)便可以非常方便的恢复到任意版本。
这种类型的版本控制系统,功能比较单一,比如很难实现多人协同开发,所以现在几乎很少使用了。
实际开发环境,一个项目通常是由多人协作共同完成的,如何让在不同终端上的开发者协同工作成了亟待解决的问题,集中式版本控制系统便应运而生了。它通过单一的集中管理的服务器,保存所有文件的修订版本,协同工作的开发者都通过客户端连到这台服务器,取出最新的文件或者提交更新。其代表为SVN,如下图所示。
弊端:这种方式很好解决了多人协同开发的问题,但是也有一个弊端,如果集中管理的①服务器出现故障,将会导致数据(版本)丢失的风险,另外协同开发者从集中服务器中更新数据时,②严重依赖网络,如果网络不佳,也给开发带来诸多不便。
分布式版本控制系统,则不需要中央服务器,每个协同开发者都拥有一个完整的版本库,这么一来,任何协同开发者用的服务器发生故障,事后都可以用其它协同开发者本地仓库恢复。
由于版本库在本地计算机,也便不再受网络影响了。如果要将本地的修改,推送给其它协同开发者,还需要一台共享服务器,所有开发者通过这台共享服务器同步和更新数据。如下图所示。
分布式版本控制系统弥补了前面两种版本控制系统的缺陷,成为了版本控制的首选方案。其代表就是Git。
下载Git客户端软件,和普通软件安装方式一样。
Linux安装:CentOS发行版:sudo yum install git
Ubuntu发行版:sudo apt-get install git
Mac(类unix,是unix的基础上改的)安装:打开Terminal直接输入git命令,会自动提示,按提示引导安装即可。
(Gite要工作需要bash命令,windows上想要使用git也要使用bash命令,gitBash就将常见的bash命令集成进来了。)
为了更好的学习Git,我们们必须了解Git管理我们文件的4种状态,分别为未追踪(untracked)、已提交(committed)、已修改(modified)和已暂存(staged),由此引入 Git 项目的3个工作区域的概念:Git 仓库、工作目录以及暂存区域。
Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。 这是Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
工作目录是对项目的某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。有时候也被称作“索引”(Index),不过一般说法还是叫暂存区域。
1、在工作目录中修改文件。
2、暂存文件,将文件的快照放入暂存区域。
3、提交文件,找到暂存区域的文件,将快照永久性存储到Git仓库目录。
Git本地仓库指的是开发者计算机中的仓库。
3.3.1Git基础命令行方式:任意目录(建议开发根目录)右键 > Git Bash Here
1、配置用户配置用户的意义在于记录开发者信息,以便在版本控制记录开发者的操作行为,如lion于2016-08-24解决了一个bug。
git config --global user.name "自已的名字"
git config --global user.email "自已的邮箱地址"
--global 配置当前用户所有仓库
注:配置用户只需要执行1次,可以重复使用。我们如果想要利用git进行版本控制,需要将现有项目初始化为一个仓库,或者将一个已有的使用git进行版本控制的仓库克隆到本地。
git init(用来初始化仓库)
git init会在当前项目目录中创建一个名为.git的隐藏目录,这个目录包含了暂存区和仓库两个区域,有了这个隐藏目录就可以使用git来管理项目了,通过ls -al 可以查看。
3、查看文件状态初始化仓库后便可以进行开发了,进入到刚刚创建好并初始为仓库的目录,添加我们开发需要的文件。
通过git status可以检测当前仓库文件的状态(未追踪untracked)。
注:git会忽略空的目录假设经过一段时间的开发后,需要把已开发的部分暂存起来等待提交,使用git add 添加到暂存区。
git add 文件名/ 文件路径 “*”或-A代表提交所有
通过git status再次查看文件状态,放到暂存区的文件被标记成了绿色,等待提交。
注:颜色是工具给添加的,目的是增加可读性并不是git统一的。继续我们的开发,再次git status可以再次查看仓库状态
被标记了红色,说明index.html被再次修改了。又经过一段时间后发现新开发的部分有Bug,想要回到之前状态,可以使用git checkout 文件名,将上次暂存的文件还原到工作区。
6、提交文件经过一个相对较长阶段开发或者一个功能开发完成了,就可以提交到本地仓库了,永久保存了。git commit -m '备注信息'
将暂存区被标记成绿色的文件,全部提交到本地仓库存储。
这时git status查看状态,没有什么可提交的,变的很干净。(git status在整个操作过程中可以反复使用,用于随时查看文件状态)
反反复复开发了很多的功能了,通过git log查看一下提交的历史。我们可以查看到一次次的提交记录
8、再次检测仓库文件状态隔了好些天后,继续开发,git status 查看状态,又提示有修改,等待重新添加到暂存区。
9、重新添加暂存区然后提交git log 可查到所有提交历史,这时可以查看到更多提交历史。
11、恢复上以前提交的版本通过commit id值可以回到之前某一次的提交(时光倒流)git reset --hard c888a614e072e2这样便回到了支付功能的状态git log再次查看发现最后一次提交成了支付功能了