什么是Git

以下摘自官网:

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git和Svn的对比

说到版本控制,除了Git外,SVN也是比较常用的。写本文的目的之一就是让用过SVN的小伙伴可以快速的上手Git,如果不用分支的话,其实他们两真没有多大差别。

SVN工作原理

每一个SVN用户都可以从服务器checkout代码,同样也可以像服务器(commit)代码,可以更新(update)到别人提交的代码。

优势:所有的操作都需要基于svn中心服务器,所以操作起来必然很简单。
正是因为所有的操作都要基于svn中心服务器,所以只要svn中心服务器出现冲突(conflict),错误(error)都会给整个团队之中的成员带来灾难。

Git工作原理

正是因为SVN的劣势所在,Git就应运而生,去掉了所有的操作都依赖于版本控制中心服务器的设计。使用的高大上的分布式管理。

每个结点都可以充当控制中心的作用,所以从GIT服务器复制(clone)一份到本地,同样也可以单独对自己本地git版本进行单独管理。在针对单个git版本库的操作(commit)、(pull)就如同Svn的commit与update操作。当然版本库之间的操作就是拉取(pull),推送(push)

Git 与 SVN 区别点:

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git 使用

命令行操作

本博客整理了一份比较完整的Git操作命令,以及一个Git专栏,专门记录Git遇到的问题。地址如下:

Git命令操作文档
Git专栏

命令行看起来会很难记,操作没有那么直观。其实,使用git,懂一些基本的命令就足够了,常用的克隆 git clone、拉取 git pull、添加 git add、提交 git commit、推送 git push等,熟悉以上几个命令,日常工作上一般都够用了。

Git加入到环境变量中,除了Git自带的命令行工具外,还可以在编辑器控制台中直接操作:

客户端 TortoiseGit

SVN常用的Win客户端是TortoiseSVNTortoiseSVN让SVN的各种操作简单化,当然了,Git也有类似的客户端。TortoiseSVN这货其实还有个兄弟叫 TortoiseGit,操作基本也 TortoiseSVN一致,所以,对于用过SVN的小伙伴,上手Git毫无压力。TortoiseGit下载和操作都比较简单,这里就不赘述了。
百度一下,你就知道。

编辑器集成

当然,除了客户端,还可以编辑器上集成Git,强烈推荐这种方式,用惯了能给你的开发速度提升一个档。拿phpstrom为例:
打开phpstrom,在setting->Version Control中找到Git,然后在Path to Git executable:选择你所安装的git.exe路径,然后点击OK完成配置。

项目根目录点击右键,下拉框有个Git,所有的操作都集成在这里了,这样就不用再打开客户端进行操作了。

当然了,也有些快捷方式,打开一个有git配置的项目,你会发现右上角及右下角都有对应的git选项。
右上角是一些快捷操作,可以拉取、提交、查看历史记录、还原等等。
而右下角的操作主要是与分支有关。


文件变动

现在还用什么对比软件对比文件的差异化,真的是太OUT了吧?Git集成到编辑器有个好处就是,当前项目存在文件改动、文件增加、文件未在版本管理中,编辑器会以蓝色、绿色、红色显示文件(未发生变化的文件默认是白色),这就很方便追踪文件改动了。
举个栗子:

版本记录

版本控制一个很重要的功能就是能记录操作的版本及修改内容。集成之后编辑器能够很方便的查看Git操作记录,

分支、提交人、修改文件一目了然

冲突解决

编辑器集成Git之后,都可以在编辑器里面解决掉。

团队开发中怎么使用

随着开发团队的扩大,代码覆盖以及代码管理是一个让人很头疼的事,
Ftp毫无版本概念,覆盖了,很难找回之前的代码块,简直就是灾难啊。

SVN在多人开发的时候也不是很方便,因为他的分支是以目录形式的,比如建立trunk、branches、tags这三个文件夹。切换分支相当于切换目录,如果要开发多个分支,那一套代码就得存多个目录,一点都不方便。

版本控制方面,Git和Svn都很优秀,但是在多人开发方面,Git的分支管理会比Svn的好用很多,下面介绍一下,在一个项目中如何使用Git,让开发更高效。

首先,我们要做到的是:开发人员本地、测试站、线上都有版本控制,只要有问题,我们就可以进行代码回滚。多人开发使用Git管理并不难,可以根据分支和权限很好的管理。

master分支master分支是生产环境对应的分支,上面的代码是最新、最稳定的版本,master分支只有项目经理或者部门主管有push、merge等权限,这样保证线上代码的安全和稳健性。所有的分支都是从master分支克隆而来。

test分支:该分支作为测试分支,可以是测试站对应的分支,当有一个任务完成后,测试人员可以把对应的task分支合并到test分支,测试人员在test分支进行测试,

常见问题及解决方案

Git的学习成本高吗?

如果你是小白,没有接触过任何版本控制的工具,那可能需要多搜搜相关的资料,了解一下基本概念,不过也不是什么大问题,就是一个提升开发效率的工具,而且有 TortoiseGit这样的可视化客户端,操作起来没什么难度;而对于有用过Svn的小伙伴,Git那就是信手捏来,TortoiseSVNTortoiseGit的操作几乎一致。

所以,不要有心里压力,无论是小白还是有过相关经验,花个一两天研究一下,上手完全没有问题的。

Git不安全?

Svn大多数搭建在自己服务器上,而刚接触Git或者是未接触Git的人,总以为Git就只能放在Github、码云等平台,觉得不安全,对于这个问题,别人给的服务就是提供代码托管,保护隐私肯定是其中重要的一项,托管平台就像银行,而我们的代码就像资产,大家信任银行才会把资产存进去,国内的码云以及全球最大的同性交流平台—Github,哦,不不不,最大的代码托管平台,都有对应的安全机制保护我们的代码安全的。那么多大公司都在用,对于代码安全这块,Git完全可以胜任。对于信任这个问题,我们可以自己Git平台,把代码放自己服务器上,还有就是使用 .gitignore 文件屏蔽重要信息。

.gitignore 文件屏蔽重要信息

这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。拿php项目为例,像缓存、日志、vendor等一般都是需要屏蔽的,而对于一些重要的数据,如 .env文件,也是要加到 .gitignore文件中的,这样,接口地址、token、数据库等重要信息不会出现在代码版本里面,可以避免重要信息的泄露,防止危害我们的数据安全。

搭建自助 Git 服务

如果觉得代码放别人家服务器不安全,那完全可以自建Git服务,像使用 Go 语言开发的 Gogs,以最简单、最快速和最轻松的方式搭建自助 Git 服务。支持的平台包括 Linux、Mac OS X、Windows 以及 ARM 平台。

有了这些,你还担心安全问题吗?

团队开发之Git管理及使用相关推荐

  1. 项目开发之git配置

    1.本地安装git配置 安装步骤,这里不详细介绍,软件下载然后安装即可. 查看git安装版本 #git --version 2.git密钥生成 ssh-keygen -t rsa -C "f ...

  2. Android开发之git命令创建tag提交远程仓库的方法(图文教程)

    老套路先看效果图: 真的特别简单: 注意:如果本地还有代码没有提交,那么打的tag将会是最后一次提交的整个包,修改过的代码是没有打包到tag里面的 1.使用命令创建本地tag版本 git tag -a ...

  3. Android开发之git提交代码到GitHub仓库教程

    首先我们想要提交到GitHub要做一些前提工作. 我们得先在AS中登录GitHub账号 先ctrl+art+s打开设置然后输入GitHub账号,点击test,显示成功即可 接下来我们可以分享代码到仓库 ...

  4. Android开发之Git提交Template模板配置

    1.首先在桌面任意新建一个txt文件: 说明:git模板自己任意配置即可 然后将模板放入任意文件夹防止误删除: 然后使用git命令设置模板 右击桌面空白处打开git窗口: 输入命令: git conf ...

  5. 团队开发之:代码规范说明

    1.1  目的 今天人们越来越明白软件设计更多地是一种工程,而不是一种个人艺术.由于大型产品的开发通常由很多的人协同作战,如果不统一编程规范,最终合到一起的程序,其可读性将较差,这不仅给代码的理解带来 ...

  6. java git_Java 实战开发之git环境安装(三)

    本节会安装Git. 一.git简介 Git 是一款免费.开源的分布式版本控制系统. 特点: 可以有效.高速的处理从小到非常大的项目版本管理. 安装环境: CentOS 6.8 64位 Git版本 2. ...

  7. android md5加密登录,Android开发之MD5加密

    将字符串进行MD5加密,返回加密后的字符串 public static String encode(String password) { try { StringBuffer sb = new Str ...

  8. Android关掉多个activity,Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit...

    本文将带你了解Android应用开发之Android Activity栈管理  制定关闭某一个Activity,关闭所有Activit,希望本文对大家学Android有所帮助. 系统Api :打开新的 ...

  9. Swift Web 开发之 Vapor - 入门(一)

    简介 Vapor 是一个基于纯 Swift 构建出的 Web 开发框架,目前可以运行在 macOS 和 Ubuntu ,用于构建出漂亮易用的网站或者 API 服务. 官方称是用的最多的 Swift w ...

最新文章

  1. JavaScript 中 call、apply和bind的用法区别
  2. java中table是什么标签_[Java教程]javascript格式化table标签内容
  3. Linux应用程序设计之网络基础编程
  4. Java接口(interface)的概念及使用
  5. [转]深入理解G1垃圾收集器
  6. nginx对websocket的支持及uliweb chatroom的测试
  7. 微软发布Azure Pipelines,开源项目可无限制使用CI/CD
  8. 高考能否决定一个人的命运?抱歉,真的可以!
  9. mysql导入的excel更新_excel导入数据库,存在则更新不存在添加
  10. 异常Throwable类
  11. sqlserver 2016 安装
  12. 分享一款在线转换工具,轻松将PDF转换成JPG格式
  13. javaScript实现简单网页倒计时代码
  14. Codeforces 918D MADMAX 图上dp 组合游戏
  15. eversync safari_EverSync app下载-浏览器书签收藏夹同步备份EverSync下载v1.11.1 安卓版-西西软件下载...
  16. 当营养遇上肠道菌群:探究其对儿童健康的影响
  17. Shell中获取脚本的绝对路径$( cd $( dirname ${BASH_SOURCE[0]} ) pwd)
  18. 老兵新传:Visual Basic核心编程及通用模块开发 pdf电子书
  19. 戴森空气净化器php00使用,戴森空气净化器如何使用 戴森空气净化器使用方法介绍【图文】...
  20. 设圆半径r = 1.5,圆柱高h = 3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积

热门文章

  1. Nodulus玩法介绍
  2. linux根据修改日期删除,在Linux下怎么一次性删除掉那些修改时间为指定日期的所有文件?...
  3. goland集成golint
  4. 火狐浏览器插件开发小试
  5. 虚拟机终端输入sudo的密码时,无法输入密码
  6. 如何让医药行业涌现更多“药神”?
  7. HTML+css简单实现手机邮箱导航网页
  8. 自写网络验证,支持注册 充值 在线消息 自动更新
  9. Ubuntu18.04美化桌面(主题、图标)
  10. 做一个商业网站需要准备什么,需要多少钱?