项目开发版本控制----Git
版本控制的工具我早之前用的svn,后来换成了git。同样是版本控制,为什么要换呢?肯定是有原因的啦~
一、Git和SVN的比较
svn的优缺点
优点:
1.管理方便,逻辑明确,符合一般人思维习惯。
2.易于管理,集中式服务器更能保证安全性。
3.代码一致性非常高,适合开发人数不多的项目开发。
缺点:
1.服务器压力太大,数据库容量暴增。
2.如果服务器链接不上,基本上是不可以工作的(限制性非常强)
3.不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制
(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。
git的优缺点
优点:
1.适合分布式开发,强调个体。
2.公共服务器压力和数据量都不会太大。
3.速度快、灵活,任意两个开发者之间可以很容易的解决冲突。
4.有本地仓库,可离线工作。
缺点:
1.不符合常规思维,学习周期相对而言比较长。
2.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
各有各的优缺点,还是需要根据项目来选择适合的工具~
今天具体来说Git~
首先需要安装Git 不过我就省略安装过程啦(百度一大堆)。。。。
二、Git的工作流程
-
1.在工作目录中修改文件【进入已修改(modified)状态】。
-
2.暂存文件,将文件的快照放入暂存区域【保存到本地仓库,进入已暂存(staged)状态】。
-
3.提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录【提交到git仓库,进入已提交(committed)状态】。
-
Git 项目的三个工作区域的概念:工作目录、暂存区域以及 Git 仓库(如图)
注:
工作目录:是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改
暂存区域:是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作`‘索引’',不过一般说法还是叫暂存区域。
Git 仓库目录:是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
我感觉git比svn方便就方便在有一个暂存区域(可以理解成一个本地仓库),可以离线工作~比较方便开发~
三、Git的基本运用
1.假设你已经安装啦git,先查看下自己的git版本~
$ git --version
2.我们可以先从远程git仓库clone出需要的项目(我项目放在阿里云,你们也可以复制GitHub上的项目哈)
$ git clone url
3.我们可以查看下这个项目有多少个分支
$ git branch -a
4.创建一个自己的本地分支(工作中肯定是自己写自己的分支哈,所以这里直接新建分支来测试啦)
$ git checkout -b name #自己起一个好听的名字(最终还是需要听老大的规范再起哈 谨慎!)
5.把本地分支上传到Git仓库
$ git push origin name #这个名字呢最好和自己本地库里的一致(不过。。。还是需要听老大的正确指导)
6.进入项目目录然后创建一个空的文本文件以备接下来的测试(比较简单 就不给复制的命令啦)
7.现在咱们是在新建的分支下,目录是这样的,修改一下刚才那个小文件
8.可以试着提交到本地仓库了哈
$ git add .
$ git commit -a -m “写个备注 写备注可是个好习惯呀“
9.现在我们的目录是这样的了,这个文件有了绿色的小对勾~说明提交到本地成功!
10.我们想要把这些改动放到Git的远程仓库里,需要这样做
$ git push origin name #这里的name代表的是Git远程上的分支名称
11.现在我们的分支上已经有这个文件,并且咱们的修改也一并提交到远程仓库啦,恭喜你~说明你成功啦~
到这里醉醉基本的操作就完成啦,但是还会出现一些问题,咱们这里只有自己的分支代码,如果需要用到别人的代码呢?这时候就需要在本地导入别人的分支进行合并来达到自己也可以用别人的代码的目的。
四、Git常用命令
$ git pull #把服务器中最新的代码更新到本地
$ git checkout name #切换到某个分支上 name代表本地分支名称
$ git fetch origin name #获取某个分支代码 name代表远程分支名称
$ git merge name #合并分支 name代表的是要合并的分支名称
$ git branch -d name #删除本地分支 name。。。代表本地分支名称
$ git branch -r -d #删除远程分支 name。。。代表远程分支名称
到这里应该就差不多啦,因为在咱们工作中是可以使用插件来代替命令行模式的,所以,,,欢迎大家指正补充~~~
作者:搬码的小菜鸟
出处:https://www.cnblogs.com/wanghao1874/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。