分布式版本控制系统---Git&GitHub

 GIT的起源
  Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux
内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此
Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux
内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。

Git主要实现2个功能:

  版本管理:

    在开发中,这是刚需,必须允许可以很容易对产品的版本进行任意回滚,版本控制工具实现这个功能的原理简单来讲,就是你每修改一次代码,它就帮你做一次快照。

  协作开发:

    一个复杂点的软件,往往不是一个开发人员可以搞定的,IT公司为加快产品开发速度,会招聘一堆跟你一样的开发人员开发这个产品,拿QQ来举例,现在假设3个人一起开发QQ,A开发联系人功能,B开发发文  字、图片、语音通讯功能,C开发视频通话功能, B和C的功能都是要基于通讯录的,你说简单,直接把A开发的代码copy过来,在它的基础上开发就好了,可以,但是你在他的代码基础上开发了2周后,这期间A没闲  着,对通讯录代码作了更新,此时怎么办?你和他的代码不一致了,此时我们知道,你肯定要再把A的新代码拿过来替换掉你手上的旧通讯录功能代码, 现在人少,3个人之间沟通很简单,但想想,如果团队变成30  个人呢?来回这样copy代码,很快就乱了,所以此时急需一个工具,能确保一直存储最新的代码库,所有人的代码应该和最新的代码库保持一致。

github介绍

  Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

  不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系BitKeeper,BitKeeper的老板BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。安定团结的大好局面在2005年就被打破了,原因是Linux社区聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了(github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。),它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

今天,GitHub已是:

  • 一个拥有143万开发者的社区。其中不乏Linux发明者Torvalds这样的顶级黑客,以及Rails创始人DHH这样的年轻极客。
  • 这个星球上最流行的开源托管服务。目前已托管431万git项目,不仅越来越多知名开源项目迁入GitHub,比如Ruby on Rails、jQuery、Ruby、Erlang/OTP;近三年流行的开源库往往在GitHub首发,例如:BootStrapNode.jsCoffeScript等。

git安装

  Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。

  Linux上安装Git:sudo apt-get install git

  Window上安装Git:

    1、在Git官网下载windows版的git,但是官网几乎很难进去。SO,我在网盘存了Windows-Git-2.17。

      链接:https://pan.baidu.com/s/14y7F7t9gKaZyG2Q_SHGH6A
      提取码:2ds0

    2、安装教程

      https://jingyan.baidu.com/article/afd8f4dea2ff0b34e286e984.html

版本库创建(仓库)

  版本仓库可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  1、创建版本库

$ mkdir git_test
$ cd git_test/

$ git init
Initialized empty Git repository in /Users/luban/git_test/.git/

  .git的目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

  2、把文件添加到版本库

  版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第7行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

  不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的。如果要真正使用版本控制系统,就要以纯文本方式编写文件。因为文本是有编码的,建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

  先编写一个文件:

$ vim first_git_file.txt

第一次使用git哈哈

  注意:文件要放到git_test目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

  把一个文件放到Git仓库只需要两步:

  1、把文件添加到仓库(在git_test目录下)

$ git add first_git_file.txt

  

  执行上面的命令,没有error说明添加成功。

  2、把文件提交到仓库

$ git commit -m "commit my first git file"

[master (root-commit) 621e6e4] commit my first git file
 Committer:
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

    git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 1 file changed, 2 insertions(+)
 create mode 100644 first_git_file.txt

中间红色部分的意思是,你在往git库里提交代码时,你需要告诉git你是谁,这样git就会纪录下来是谁改的代码,其实就是为了日后查询方便,你只需要提供一个名字和邮件地址就可以,

$ git  config  --global  user.email  "test@example.com"
$ git  config  --global  user.name "test"

git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

 

原文地址:https://www.cnblogs.com/yunwangjun-python-520/p/10449362.html

时间: 2024-10-13 22:32:56

分布式版本控制系统---Git&GitHub的相关文章

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 http://www.cnblogs.com/yubinfeng/p/5182271.html 本篇导读: 上篇介绍了一款Windows环境下的Git服务器工具GitStack ,搭建了最简单的Windows下的Git服务器,需要再次提醒的是

分布式版本控制系统 Git 教程

目录   简介  原理  安装  配置  命令  小结  资料 简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布式版本控制系统前,有必要先了解一下传统的集中式版本控制系统. 集中化的版本控制系统,诸如 CVS,Subversion 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文

[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】

转自:http://www.cnblogs.com/yubinfeng/p/5182271.html 前面介绍了两款代码管理工具VSS和SVN,这两种管理工具在很长一段时间曾为我们的代码管理提供了便利,本篇介绍一款思维方式完全不同(也可以说不合常理)的版本控制系统——Git.可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系.Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)

分布式版本控制系统GIT的使用

一.什么是Git Git是一个分布式版本控制系统,Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异(如CVS.Subversion等).而Git并不保存这些前后变化的差异数据.Git更像是把变化的文件作快照后记录在一个微型的文件系统中.每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引.若文件没有变化,Git不会再次保存,而只对上传保存的快照做一次连接,即若文件未变化则指向上

分布式版本控制系统Git(二):github

前言 但凡是喜欢研究技术,或者听大牛们说起过的,都应该至少是听过github这个东西.具体就不介绍了,不了解的可以去了解了解,最主要的功能当然是代码托管啦,上面有各种各样的大牛写的项目.另外这一章不仅仅是说明如果跟github关联操作,因为github是远程版本库,实际上在公司中,也只是先给你一个远程版本库的地址给你,你自己去克隆,然后开发,所以下面操作,可以跟公司远程版本库操作一致. 连接github 1. 当然是注册github账号了 https://github.com 2. 创建SSH密

分布式版本控制系统--Git使用

前言 花了点时间,学习Git版本管理工具,以前用过SVN比较之后,确实Git比SVN好用,更强大.简单总结了一些Git使用命令,如果想弄明白Git请猛击底下推荐学习网站. 使用总结 创建版本库: 初始化一个Git 仓库,使用git int 命令 添加文件到Git仓库,分两步: 第一步,使用命令git add ,注意,可反复多次使用,添加多个文件: 第二步,使用命令git commit,完成. 查看内容 要随时掌握工作区的状态,使用git status命令. 如果git status告诉你有文件被

分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境

本篇导读: 可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系.Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)统一发布新版本.各个地区的开发者,还可以离线开发,这样版本管理系统之所以火,也和当今社会万众创新的氛围分不开.通过Git你可以尽情的发挥想象力,开源的春天已经到来,让我们启航吧!  1. Git简介 名称:Git (Git的读音为/g?t/,开源.免费.分布式的版

分布式版本控制系统Git的安装与使用

业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103 远程仓库地址是:https://github.com/BinGuo666/git 1.下载安装配置用户名和邮箱. 2. 创建工作目录并通过git init命令把这个目录变成Git可以管理的仓库. ls -a 命令可以发现工作目录下多了一个.git的隐藏目录,该目录是Git用于跟踪管理版本库的,别手动修改.git里的文件,免得破坏了Git仓库. 3. 在工作目录下准备文

分布式管理控制系统Git与项目托管平台Github相关概念、操作方法与常用命令

简介 GitHub 是一个面向开源及私有软件项目的托管平台 因为它只支持 Git 作为唯一版本库格式进行托管,所以命名GitHub Git是一个开源的分布式版本控制系统 可以有效.高速的处理从很小到非常大的项目版本管理 它也是目前世界上最先进的分布式版本控制系统 什么是版本控制系统呢? 简单地说,它有以下功能 备份(记录多个版本文件的功能) 记录操作时间线(查看历史操作,进行版本回滚.前进的功能) 多端共享代码(代替各种云盘的功能) '自动'合并(解决多人开发冲突问题) 这样的一个系统的优点是不