转自:http://fsjoy.blog.51cto.com/318484/244397

第一课. git简介
内容:什么是git,为什么要使用git以及获取和学习git的途径。
欢迎来到github学习教程的第一课。本教程将通过一系列的实例来介绍如快速,轻松地使用Git。教程中会有很多屏幕截图,希望这样可以让你更好的学习和理解。
本节简要介绍git的概念和为什么应该使用它

 
git是一个快速,开源,分布式的版本控制系统。因此,它在(开源)和(协作编程社区)很快取代了svn。
版本控制系统 
首先,git是一个版本控制系统,用来保留工程源代码历史状态的命令行工具。类似于SVN,CVS或者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 install
6.$ git --version
如果需要命令帮助的话,可以键入'-help'就会显示出
操作手册。你也可以键入'git help command'实现同样的目的。
$ git log --help
$ git help log

开源 
git是一个开源项目,有很多年的历史了,它的大部分内容都是用C来写的。
你可以得到整个项目的源代码,加以分析和改进。下载源程序的地址:git-scm.com/download。git许可证:GNU通用公共许可证(GNU General Public License)
离线,速度快

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

这也意味着Git比其他的VCS工具要快很多,因为某些VCS工具对网络的依赖会导致时间上的延迟。下面来看看'log'命令分别运行在git和SVN上的结果:
[master]$ time git log > /dev/null
real0m0.352s
user0m0.300s
sys0m0.034s 
$ time svn log > /dev/null
real0m3.709s
user0m0.482s
sys0m0.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"'
real0m0.273s
user0m0.032s
sys0m0.008s
time 'svn add icons; svn commit -m "added icons"'
real 0m45.276s
user0m15.997s
sys0m5.503s
即使是再加上用git 提交(commit)之后再上传(push)到网络共享仓库中的时间,也比SVN的耗时要少的多的多。
time git push
real0m6.219s
user0m0.023s
sys0m0.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

转载于:https://www.cnblogs.com/yuandou/articles/2484857.html

Git学习教程(一):git简介相关推荐

  1. (转)Git学习教程(一):git简介

    原文地址:http://fsjoy.blog.51cto.com/318484/244397  Git学习教程(一):git简介 2009-12-16 13:24:52 标签:git 学习 教程 [推 ...

  2. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  3. Git使用教程(二) — Git安装和使用

    Git使用教程(二) - Git安装和使用 使用目的:通过git管理github托管的项目代码 一.下载安装 GIt官网下载:https://www.git-scm.com/download/win ...

  4. Git学习笔记:Git简介

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 目 ...

  5. 史上最全Git学习教程

    Git是世界上最先进的分布式版本控制系统,没有之一. -- Git爱好者 Git 是一个「分布式版本管理工具」,其具备太多的优点:更方便的 Merge.更方便的管理.更健壮的系统.对网络的依赖性更低. ...

  6. 最全白话文git学习教程,最适合入门及深造

    git学习前言 之前的学习过程中老是遇到git,但是也没有必须用到的地方,也没在意.但是因为一次偶然的机会写其他代码,回过头来发现,原来那时候已经模模糊糊的学过了git,现在正好也需要系统的回忆下,所 ...

  7. signature=475cf910f858e6daa4bbf04f3c6cbe9a,Git学习教程(四--七)

    第六课 Git 日志 内容提要:浏览项目历史,查询指定提交内容,图形化显示分枝和合并... 'git log'是git中最常用的一个命令,执行之后,会显示该项目的提交历史.如果命令不加任何参数,那么就 ...

  8. Git学习教程(六)Git日志

    第六课 Git 日志 内容提要:浏览项目历史,查询指定提交内容,图形化显示分枝和合并... 'git log'是git中最常用的一个命令,执行之后,会显示该项目的提交历史.如果命令不加任何参数,那么就 ...

  9. Git学习教程(二):配置和初始化

    第二课.配置和初始化   配置git 在使用git之前你需要配置一下git.git在你创建提交的时候会记录你的名字和email地址,所以你应该告诉git这些内容.可以使用'git config'命令来 ...

最新文章

  1. 不用Office自动化技术,给Word文档中填充赋值
  2. LeetCode Ugly Number
  3. 一些日常工具集合(C++代码片段)
  4. QLibrary Class Reference(qt加载外部库)
  5. 54_pytorch GAN(生成对抗网络)、Gan代码示例、WGAN代码示例
  6. 请说说接口和抽象类的区别?
  7. PHPCMS代码生成器
  8. UNIX(多线程):20---生产者消费者实例
  9. python的使用_python的使用
  10. SpringBoot中拦截器
  11. android TextView中文字通过SpannableString设置属性
  12. 预习 Delphi 2009 中的新功能 - JSON (二) : 如何在 Delphi 中使用 json
  13. python 调用sqldr_SQLLDR用武之地
  14. BCNF范式(修正的第三范式)、第四范式和第五范式
  15. 大数据分析平台搭建指南
  16. [BZOJ1779][Usaco2010 Hol]Cowwar 奶牛战争(最大流)
  17. 在VS2010下利用vue开发团队项目
  18. win7装xp(win7装xp双系统教程)
  19. 5G毫米波Vs毫米波通信模块
  20. 【超好玩的路由环路系列】2——汇总环路

热门文章

  1. MySQL-常用命令大全
  2. 编程题A+B Format的总结(第二次作业一)
  3. Notepad++加上xml格式化的功能
  4. ArcGIS AddIN开发异常之--修饰符“static”对该项无效
  5. JAVA实例,判断是否是瑞年
  6. WPF:ListView数据绑定及Style
  7. AJAX面试题:一个页面实现增删改查(ASP.NET实现)
  8. 治标不治本:POI Ptg错误的解决方法
  9. 做好数据分析必备的 5 种典型可视化图表 | 技能卡片 No.1
  10. 一位互联网老兵分享,社会化运营案例解析(宜信内部干货)