Git简介

来源:互联网 发布:linux svn 创建仓库 编辑:程序博客网 时间:2024/06/09 23:25

在学习过程中,我们一般秉承着以需求定目标的原则,在需要的情况下对自己的能力进行拓展。在初学编程的前一年,需要实现的需求过于简单,基本都可以独立完成,慢慢地在第二年,开始接触javaee,android等技术,虽然不是企业级开发,但是其中的代码量比起之前也是大了很多,逐渐强调团队完成,由于学习都是一个过程,我们在很长一段时间乐于在QQ之间发送压缩包,每个人完成了自己一部分的开发,然后把压缩包通过QQ上传,告诉队友们哪些地方需要更改,这种开发方式无疑效率低下并且出错率相当高。渐渐地在学习中,了解到还有像SVN、Git这种团队开发工具,于是开始憧憬,但是一个人会用并没有太大意义,你身边和你并肩作战的队友仍然选择压缩包形式把整个项目文件传来传去,那我也是很绝望啊。但是鉴于在真实的生产环境中,依然是以团队开发为主,所以笔者觉得不能一拖再拖,还是着手学习Git。

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是Linux之父Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。对于Linus这位传奇人物,我觉得用666和233都无法形容,当他觉得现有系统不好用的时候,就尝试着写了个系统,后来就有了linux,在开发过程中,他觉得团队开发很不方便,然而又不喜欢非分布式的SCM,就自己花了几周时间写了个版本控制软件,于是就有了今天我们要介绍的Git。

Git到底是做什么的?

就我个人认为,Git主要的功能有两点,一是版本控制,二是团队开发。版本控制,指的是你所开发的项目,总需要不断的修改增加代码,然而可能有一天,程序直接崩溃了,崩溃的原因很难找到或者解决起来十分麻烦,按照正常情况你可能要把整个项目推翻重做了,几个月的心血可能就白费了。然而通过版本控制软件,你可以将项目回滚到某个时间点的版本,并且选择性地将那个版本的内容和当前版本内容进行融合,这样可以节省很多力气;团队开发,指的是一群人开发同一个项目。一个人开发整个项目的时代已经过去了,当然不乏有那种大牛就喜欢独来独往,像linus就是这样一个人。但是总的来说,大部分公司的项目仍然是以团队为单位对项目进行开发。可是要怎样协调才能够让团队开发更加顺利呢。尽管我们可以将各个功能模块分给不同的人进行实现,但是难免有些模块是相互依赖的,并且不同的开发者之间如何进行交互也是一个很大的问题,总不能像我上面说的一样,通过QQ将压缩包传来传去吧,四个字形容——费时费力。这时候,版本控制软件就可以派上用场了。作为Git这样一个分布式版本控制软件,它允许很多的工程师同时对同一个项目在本地进行开发,当某个工程师觉得自己那部分差不多了,就直接提交到远程服务器,那其他的工程师都可以把它clone下来,然后选择性地和本地代码进行merge操作。其中还有一个分支(branch)的概念,大致意思就是说,首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地master分支和origin/master分支的差别,最后进行合并。在本地进行开发后,及时地提交并推送至远程仓库的分支下,再由最后一名工程师做合并处理,这样就避免了每一位工程师的随意提交最后导致代码紊乱。

如何使用Git进行版本控制

Git的使用主要有三种形式,Cmd、Bash和GUI。我作为初学者,当然首选GUI,但是尝试了一段时间后,感觉GUI过于累赘,Bash操作更加简便,Git果然是为Linux而生的,所以对于了解Linux基本操作的朋友,还是推荐使用Bash。本文不对Bash和GUI的使用进行详细解释说明,只从理论角度对Git进行简单介绍。
我们还需要对github进行简单的了解,我们知道git是一个版本控制工具,而github是一个用git做版本控制的项目托管平台。可以将github当作一个仓库,用来存放各种各样的开源项目,然后git就可以对github上的开源项目进行版本控制了。也有人说,git和github的关系大概就是“斗地主”与“QQ游戏大厅”的关系吧。
所以到底如何使用Git进行版本控制呢,我们介绍以下两种场景:
1.个人开发场景下的Git
A君每日早出晚归,白天在公司上班,晚上在家中加班,而且用着不同的电脑,做的都是同一件事——写项目。但是每次下班的时候都要将整个项目保存一下,然后回到家打开电脑读取项目继续干,然后加班结束又要存下项目,等待第二天上班继续使用。麻烦是次要的,最要命的是,在公司写的好好的,一回家就满屏bug,而且回家路漫长,修改了哪儿都忘得一干二净,这就很尴尬了。怎么办呢,嗯,使用Git吧。使用ssh的方式创建私人帐户和公司帐户的key,然后将公钥添加至github服务器,使得个人电脑和公司电脑都能够对github上的项目进行fetch和push,这样便可以在个人电脑和公司电脑上对github上的同一个项目进行操作,并且Git会将每次commit后的改动存档至.git文件夹下。
2.团队开发场景下的Git
首先A君作为发起人,在github上开源了项目代码,然后作为一个团队,B君和C君也要共同参与开发。有以下几种方式:
1.1 与上述场景类似,可以通过ssh公钥授权,使得B君和C君也有对项目的直接控制权;
1.2 github上可以给项目添加合作者,作为合作者的B君和C君,也可以对项目进行修修改改;
1.3 有很多开源项目,开发者们都致力于对源码进行优化,但试想一下,如果每个人都可以把项目clone下来随意修改然后再随意push到服务器,那恐怕开源社区早就乱成一团了。所以,我们可以把项目先fork到自己的repository中,然后再从自己的repository中clone到本地,对它修修改改后,再push到自己github上的这个项目中。等你觉得想要把你改的发给原项目同步,就在你的项目上点Pull requests按钮,由原项目主人决定是否接受你的修改。

0 0
原创粉丝点击