学一点Git--20分钟git快速上手

在Git如日中天的今天,不懂git都很差意思跟人说本身是程序猿。你是否是早就跃跃欲试了,只是苦于没有借口(契机)。 好吧,机会就在今天。 给我20分钟,是的,只要20分钟, 让你快速用上git。html

咱们废话很少说,直接来干货。linux

咱们将会介绍如下几点:git

一, 什么是gitgithub

二,使用git的通常开发流程数据库

三,快速安装新建项目。holloworld。windows

开始:缓存

一,什么是git。安全

阅读本文的前提是你知道或者用过至少一种源代码管理工具,好比:SVN, CVS 或者TFS等等。 你必须知道什么是源代码管理。若是这些都不知足。请直接跳过本文。服务器

了解陌生事物的最好办法,是和已知事物类比。 ---孔子分布式

咱们以svn为例。  咱们都知道传统的源代码管理都是以服务器为中心的:

每一个开发者都直接连在中间服务器上, 本地修改,而后commit到svn服务器上。

这种作法看似完美,可是有致命的缺陷:

1. 开发者不能本地跟踪代码版本。 全部的信息都是在服务器上。  你把本地的代码改了不少,可是又不能提交。一般,本地只能缓存一个版本。对于小项目无所谓, 可是项目一复杂,人员多就麻烦了。 一般你本地的代码都全是红色的。本身都不知道今天修改了什么, 有哪些修改是真正应该提交给svn的。

2. 由于第一点,一旦离开服务器, 程序猿将没法正常工做。 由于本地不能跟踪代码版本。  你的(几乎)任何操做都必须连上服务器。好比, show log, blame,show history等等。

3. 中央服务器压力过大。  由于每一个人都必须把代码提交到服务器,而且作daily build。

4. 对于大型项目, svn几乎不可用。 例如linux内核项目, 开发者何止几万? 都直接提交给svn服务器的话还不乱套了。

5. 对于我的的私人项目而言(或者对于小公司的项目), 不用版本控制固然不行,可是为了用版本控制而专门架设svn服务器有有点舍不得。

有没有能解决上述几个问题的东东呢?  恩, 答案是确定的。

Linux内核的做者也遇到了这些问题,因而他决定再一次改变世界, 重写一个能够本地使用的svn。

对, 这就是git。  分布式代码版本管理系统。(说人话 :就是不用服务器的svn)

咱们来看git的结构:

git没有中央服务器。 你装上git软件以后,你就能够指定本地的文件夹进行版本控制了。你可拔掉网线,而后在本地修改, commit,revert(rollback), branch, restore, show log, blame, history 等等, 所有你以前在svn里面能够用的操做。 简单的说,你就完美了。

 

你可能意识到一个问题了。   就是天下大乱了。

每一个人都自顾自的开发,怎么协做呢?  恩,一般git比svn会多出两个操做, 就是 pull 和push。

咱们看一个复杂一点的图:

开发者之间经过 pull和push操做, 把别人的修改拉过来,或者把本身的修改推给别人。

恩,你可能仍是以为有问题,咱们生产 环境中, 以谁的代码为最终版本呢? 

这个问题确实比较棘手,由于,从单纯的技术上讲,每一个开发者的机器都是对等的。 没有主次之分。

咱们还有办法:

技术上不能解决的问题,咱们从制度上解决. ---- 孟子

从分布式环境中咱们模拟出一个中心来:

咱们引入Leader这个角色。  他的机器是最终版本。 每一个开发者都必须把最终的修改版push给leader。 leader会review而后提交。他就是最终版本。

恩, 咱们好像还漏掉一个大问题, 说git,怎么漏掉了github呢。 github是什么。

咱们知道,若是每一个人都本地修改的话,本地可能不安全,(硬盘坏了,笔记本被偷了。。。。)

咱们可能须要一个安全的服务器来存储/备份代码。对于开源的项目,多是须要一个地方分享你的代码,你不可能24小时开着笔记本,让别人从你这pull代码。

因而, 网上所谓的源代码托管网站就冒出来了。 github就是这样的。

看这个图, 我只修改了其中一个地方, 就是把leader的机器换成了。 github.com 提供的在线帐户。

因此, git和 github没有必然联系。

这里有几个经常使用的在线托管地址, 有兴趣本身看看:

1. github.com,  大名鼎鼎。 免费,只支持开源项目, 不支持私有项目。

2.  bitbucket.com ,一样大名鼎鼎。 免费, 支持开源项目和私有项目。 免费用户最多5个。项目无限。

3.   git.oschina.net, 国内顶尖托管平台, 我本人正在用的就是这个。  支持开源项目和私有项目。 成员无限, 项目1000个。   使用的是阿里云服务器, 速度极快。  本人推荐5颗星。

 

二, git开发的通常流程。

上面其实已经涉及了使用git的通常结构。 那么生产环境中, git是如何应用的呢。

本人知道的模型以下:

 

每一个开发者都向本身的项目服务器(leader)提交代码, leader向公司服务器提交。 固然这个leader是无关紧要的。若是项目小的话,  开发者能够直接向公司服务器提交。  公司的服务器就是最终版本。  通常公司还会有持续集成CI服务器。  咱们能够在公司的源码服务器上设置git的hook。 自动触发CI服务器工做。 这是后话,很少说了。

 

三,  前面的概念弄清楚以后, 上手就容易多了。 咱们helloworld。

1.   这是git的官网:http://git-scm.com/  去下载windows客户端。

     若是是linux的话, sudo apt-get install gitcore

2.  注意, 官网的客户端都是命令行的。 命令行是高阶用法。不在这里说了。 咱们下个gui。

我用的是TortoiseGit。  https://code.google.com/p/tortoisegit/  , 你们恐怕都熟悉svn时代的乌龟爬。上手快。 咱们下面的操做都是gui上的。

安装过程不说了。 一路next。 咱们跳过。 直接到最后。假设你如今已经安装完成了。

好比我已经有一个工程, helloworld:

这是工程文件的内部结构:

如今咱们想让helloworld用上git怎么作呢, 在工程根目录下,点击鼠标右键。

选择 Create repository。

这个选项不要勾上。 稍后咱们会解释什么是 Bare。

而后就完成了。

里面多出了一个 .git目录。 当前的目录(及其全部子目录)已经在git的监视之中了。 可是当前的代码尚未添加到git的跟踪数据库中。  简单的说,git尚未储存任何版本信息。 咱们须要进行第一次提交:

git默认你本地会有一个主分支master。

咱们写一些注释, 而且勾上想要添加到git的文件。 (若是有子目录的话, 它都会显示在这里。)

提交完成, close。 这个push按钮,稍后再说。

好了,这个时候咱们在回到文件夹,看看有什么变化:

 

如今这些文件就添加进git了。

剩下的你就能够随心所欲了。 像svn同样,本身试试几个命令吧: 修改, difference, commit, revert,

到这你已经入门了。 

最后咱们来介绍两个重要的概念。

1. “git目录”,   就是指上图中,项目根目录下生成的 “.git” 文件夹。  用过svn的同窗都知道, svn有‘.svn’文件夹。  他们的做用差很少。 这里保存了git的本地数据库资料。就是全部的版本信息。   跟svn不同的地方就是,git中,只有根目录下有这个目录, 全部的子目录下都没有, 也就是每一个工程只有一个.git目录。

2.  “git工做目录”, 其实就是你的工程目录, 好比上图中的工程根目录:H:\mycode\helloworld\  。  为何有这个工做目录呢。 就是你工做在这个目录下, 你能够修改编辑里面的文件,最后把修改提交给git目录。  这个共工做目录还有一个神奇的地方就是,  你能够建立不一样的branch(你默认工做在master下), 当你切换不一样的branch时, 你的工做目录(工程目录)里的全部文件都会变成当前branch对应的文件。 这个不展开了。

 

最后再解释上面留下的两个问题:

1. “Bare”  建立Bare的意思是: 你只想要git的数据库(即上图中的 “.git”文件夹。), 而不想要当前的文件。 这一般用在公司的中央服务器上。 它不须要当前项目的实际代码,只须要保留git数据库信息就好了。

2. 在commit以后的对话框中的 push的意思。   正如以前介绍的。 push的意识是把你的修改push给别人(或者给公共服务器)。  commit的意思只是提交到本地的 .git 数据库。 并无更新给别人。  因此提交完以后, 乌龟很贴心的给咱们一个push按钮。 经过它你能够快速把刚刚的修改push给别人,或者给服务器。 

 

总结, 这不是一本彻底的git手册,但至少能让你消除git恐惧症,快速入手。

 

这里是gitbook的中文版: http://gitbook.liuhui998.com/  他是真正的大而全。 为何最后才说它呢? 由于它就像是一本 牛津大辞典, 全面,权威。  可是对于幼儿园小朋友学英语,就不能一上来就背它吧。  先跟着别人说,上手要紧。   以后有什么不会的,再去查字典。

 

好了。 就到这。 欢迎你们访问个人我的独立博客: http://blog.byneil.com  欢迎你们多多交流。

后面有时间的话,还想给你们分享一下我使用几大源码托管服务器的经验。 但愿你们顶啊。。。。

文章引用地址 : http://www.cnblogs.com/shuidao/p/3535299.html

相关文章
相关标签/搜索