专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » Git教程(一):git介绍 »正文

Git教程(一):git介绍

来源: 发布时间:星期日, 2009年12月20日 浏览:0次 评论:0
  欢迎来到github学习教程本教程将通过系列例子来介绍如快速轻松地使用Git教程中会有很多屏幕截图希望这样可以让你更好学习和理解

  本节简要介绍git概念和为什么应该使用它

  git是个快速开源分布式版本控制系统因此它在(开源)和(协作编程社区)很快取代了svn

  版本控制系统 

  首先git是个版本控制系统用来保留工程源代码历史状态命令行工具类似于SVNCVS或者Perforce等工具

  当你需要得到以前个保存点时你可以利用它来追踪项目中文件并且得到某些时间点提交项目状态你可以和合作伙伴共享这些历史状态将他们工作和你工作进行合并可以对整个工程或某些文件跟历史版本进行比较或者恢复到早期某个版本

  git根本上说是个命令行工具所以本教程中大部分举例都会用命令行方式给出教程中使用现行git版本(1.6系列)编写举例如果使用早期版本我们也建议您升级到1.6系列当然现在已经有很多git UI工具使得git变得更加简单易用

  git安装:

  下载地址
http://www.kernel.org/pub/software/scm/git/ 

  安装过程:

  
1.$ tar xzvf git-1.6.5

  
2.$ cd git-1.6.5


  3.$ ./config --prefix=/usr/local


  4.$ make

  
5.$ sudo make

  
6.$ git --version

  如果需要命令帮助可以键入'-help'就会显示出
操作手册你也可以键入'git help command'实现同样

  $ git log --help

  $ git help log

  开源

  git是个开源项目有很多年历史了大部分内容都是用C来写



  查看原图(大图)

  你可以得到整个项目源代码加以分析和改进下载源地址:git-scm.com/downloadgit许可证:GNU通用公共许可证(GNU General Public License)

  离线速度快

  git是完全分布式处理这意味着它可以离线工作跟VCS工具例如Perforce或者SVN完全区别Git所有操作几乎不需要网络连接包括历史回顾差异显示和提交

  这也意味着Git比其他VCS工具要快很多某些VCS工具对网络依赖会导致时间上延迟下面来看看'log'命令分别运行在git和SVN上结果:

  [master]$ time git log > /dev/null

  real 0m0.352s

  user 0m0.300s

  sys 0m0.034s 

  $ time svn log > /dev/null

  real 0m3.709s

  user 0m0.482s

  sys 0m0.168s

  git仅用了0.3秒而SVN用了3.7秒你会发现几乎所有命令都有这样时间差异例如添加知名famfamfam出品图标集并提交使用git可以将【提交(commit)】和【上传('push')网络】这两个步骤分开其中【提交(commit)】git只用1/4秒而 SVN会用到45秒

  time 'git add icons; git commit -m "added icons"'

  real 0m0.273s

  user 0m0.032s

  sys 0m0.008s

  time 'svn add icons; svn commit -m "added icons"'

  real  0m45.276s

  user 0m15.997s

  sys 0m5.503s

  即使是再加上用git 提交(commit)的后再上传(push)到网络共享仓库中时间也比SVN耗时要少

  time git push

  real 0m6.219s

  user 0m0.023s

  sys 0m0.011s

  如果你仅仅是想提交然后继续工作你就会感觉到时间上巨大差异--git工作流程跟以前版本控制系统不大git命令大部分都是即时不像以前执行'svn commit'命令的后可以喝杯咖啡再回来继续工作

  比svn更小

  git比较节省空间举例来说个Django项目如果使用现行源代码控制系统(source control systems)来实现版本控制git克隆(clone)是最小

  $ du -d 1 -h

  108M ./django-bzr

  44M ./django-git

  53M ./django-hg

  53M ./django-svn

  更神奇虽然git克隆比SVN要小很多但是git克隆包含整个项目历史版本---从第次提交的后个文件次提交版本都囊括了然而SVN只包含项目最后个版本

  快照而不是变更集

  跟其他VCS工具区别git是基于快照不再是考虑将提交点存储成补丁文件而是在你提交项目时候对项目做个简单快照

  提交东西包含些元数据(提交信息(message)作者日期等等)个提交点指向这次提交时项目快照



  查看原图(大图)



  记住这个图对于给定情形下使用Git是非常有帮助

  如果要了解更深层次Git存储数据只是可以访问Git for computer scientists

  分支和合并

  也许git最显著个特点就是它分枝模型了它改变了开发者工作基本模式以前VCS工具分枝思路方法是对每个分枝都放到个独立目录中而 git可以让你在同个工作目录中切换(switch)到区别分枝创建和切换分枝几乎是即时(instant)而且并不是所有分枝都需要上传到 git仓库中去共享对于某些你更愿意隐藏在本地工作来说git无疑提供了很大便利从这点上来说git确是有其独到的处

  摒弃了CVS只对项目开发主线创建分枝做法git开发者可以随时创建合并删除多个分枝通常对于实现某个功能或者每个debug 阶段都可以创建它分枝当完成的后再将其进行合并这种模式可以让开发者体验更加快速简便安全方式来开发项目它鼓励种非线性开发周期它可以说是并行多线程模式而不是多个步骤串行模式

  安装git

  参见git community book中对于git安装在区别操作系统中介绍说明

  资源

  有关git更多信息可以参考git-scm.com



标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: