热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

git整理(一)

GitGit简介集中式和分布式比较Windows安装Git创建版本库往本地

Git

Git简介

git是世界上最先进的分布式版本控制系统
很多人都知道,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网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等

集中式和分布式比较

集中式:代表(svn)所有人工作的时候代码版本都集中 放在中央服务器中,都由中央服务器进行版本管理。同时要求工作时必须联网,从中央服务器进行上传和下载。
分布式:代表(git)分布式版本控制系统,没有中央服务器,每个人的电脑上都是一个完整的版本库。相比于集中式,分布式更加安全。当然分布式在公司中小组多个成员进行开发的时候,也需要有一台电脑充当中央服务器,但是他的作用不同于集中式的中央服务器,仅仅只作用于小组成员之间的“交换”。
?
git:本地有与"中央仓库"一样的代码及历史记录的信息,一旦服务器有问题,那么找一个最新的本地代码同步上去后,之前所有的提交历史记录还可以看到。
svn:所有人都将代码提交至“中央仓库”,一旦服务器有问题,就算找到一个最新的代码上去,也是只能以当前时间为节点作为新的项目去使用,之前所有的提交历史记录无法看到,对于处理历史遗留问题并不友好。
?
Git本地仓库包含代码库还有历史库,在本地的环境开发就可以记录历史 而SVN的历史库存在于中央仓库,每次对比与提交代码都必须连接到中央仓库才能进行。
这样的好处在于: 1、自己可以在脱机环境查看开发的版本历史 2、多人开发时如果充当中央仓库的Git仓库挂了,任何一个开发者的仓库都可以作为中央仓库进行服务(不过一般不会这样设置)

Windows安装Git

直接从官网下载,然后傻瓜式安装(最好不要有中文路径名)
安装完成后打开Git Bash
要在git上面输入本机使用的名字和邮箱地址,就类似与注册
$ git config --global user.name "你注册的名字"
$ git config --global user.email "你的邮箱地址"

创建版本库

所谓的版本库就是版本的仓库,repository,就类似于maven的仓库,,这个版本库里的所有文件都可以被git管理起来,对文件进行的读写操作,Git都可以跟踪
?
方法一
?
#创建一个文件夹
$ mkdir learn1
#进入刚创建的文件夹
$ cd learn1
#查看当前路径
$ pwd
/c/Users/Administrator/learn1
#通过git init命令把这个目录变成git可以管理的仓库
$ git init
Initialized empty Git repository in C:/Users/Administrator/learngit/.git/
?
方法二
?
找到一个位置,鼠标右键点击Git Bash Here
#创建一个文件夹
$ mkdir learn2
#此时刚点进入的位置就已经创建了一个learn2的文件夹
#通过git init命令把这个目录变成git可以管理的仓库
$ git init
Initialized empty Git repository in C:/rep/.git/
?
接下来就可以在里面写一些文件了,linux的指令也可以在这里使用

技术分享图片

往本地仓库中添加文件

#把刚写好的文件传入到本地仓库中
$ git add a.txt
#没有显示错误说明成功
#查看当前状态(可省略)
$ git status
On branch master
?
No commits yet
?
Changes to be committed:
(use "git rm --cached ..." to unstage)
      new file:   a.txt
#此时只是添加至stage 并没有提交到本地仓库
#提交至本地库还需要commit一下
$ git commit -m "第一次提交"
[master (root-commit) 77c2b2c] 第一次提交
1 file changed, 1 insertion(+)
create mode 100644 learn2/a.txt
#注意-m 后面一定要加备注信息,如果在公司中不加,可能挨熊
#继续添加代码,提交就重复刚刚的步骤

 


推荐阅读
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • 本文分析和介绍了GLo ... [详细]
  • 2019.4.14第1001题:SumProblemProblemDescriptionHey,welcometoHDOJ(HangzhouDianziUniversityOnli ... [详细]
  • Git(1)
    安装Git完毕(在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦)1.D盘新建GitTest文件夹2.打开GitTest,在空白的地方右键,3.单击GitBashHere ... [详细]
  • python基础(二、pycharm安装、卸载)
    3.在Ubuntu中安装PyCharmPyCharm的官方网站地址是:https:www.jetbrains.compycharm注意:安装时不要使用root用户安装,否则后期使用 ... [详细]
  • 这一篇主要总结一下jQuery这个js在引入的时候做的一些初始化工作第一句window.undefinedwindow.undefined;是为了兼容低版本的IE而写的因为在低版本 ... [详细]
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • python自学教程哪里好,python比较好的教程
    本文目录一览:1、想学python去哪里比较好? ... [详细]
  • 抓取百万知乎用户设计之实体设计
    一.实体的关系实体是根据返回的Json数据来设计的教育经历方面用户可以有很多教育经理,USER和education是一对多的关系,一个education对应一个education一 ... [详细]
  • Xib九宫格应用管理使用xib封装一个自定义view的步骤1新建一个继承UIView的自定义view,假设类名叫做(AppView)2新建一个AppView.xib文件来描述 ... [详细]
  • 看这里,教你如何快速将pdf文件翻译成中文
    因为网上下载的PDF资料,往往掺杂着一些英文,所以中英文翻译是一件很平常的事,毕竟不是每个人的英文都那么好,轻轻松松的就能够看完一篇英文的文件,那么,我们就要寻找翻译工具来帮助我们 ... [详细]
  • 如何设计一个秒杀系统(各方面都写的很到位)
    1.Overview1.1并发读写秒杀要解决的主要问题是:并发读与并发写。并发读的优化理念是尽量减少用户到服务端来读数据,或者让他 ... [详细]
  • 1011-MarriageCeremoniesPDF(English)StatisticsForumTimeLimit:2second(s)MemoryLimit:32MBYouw ... [详细]
  • kepserver中文手册,kepserver使用教程,kepserver设置
    下面介绍一下KepServer模拟器的使用,以下示例使用服务器随附的Simulator驱动程序来演示创建、配置和运行项目的过程。Simulator驱动程序是基于内存的驱动程序,能为 ... [详细]
  • 是不是zlib是这些库的压缩算法的实现库,而这么多库它们只是在打包的时候使用了zlib进行压缩而已.而具体的打包格式就有ZIP,BZIP2,GZ之分?但是在我们在用gz压缩时候通常之前 ... [详细]
author-avatar
NewGuy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有