二十分钟学会Git,让你快速上手Git【建议新手收藏】

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

一, 什么是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服务器工作。 这是后话,不多说了。

三,快速安装新建项目

  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按钮,稍后再说。

在这里插入图片描述
为了答谢大家关注和支持,这次给大家准备了限时领取福利:阿里面试题、百度面试题、滴滴面试题、华为面试题、京东面试题、美团面试题、腾讯面试题、头条面试题、中兴面试题。
在这里插入图片描述
还等什么小编推荐自己的linuxC/C++语言交流群:【1106675687】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!前100名进群领取,额外赠送一份价值199的C/C++、linux资料包含(视频教程、电子书、实战项目及代码),下面部分展示。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_50662680/article/details/112678255
今日推荐