第二个灵魂 发表于 2015-1-16 11:34:33

来一发Git利用基本篇

讨论什么版本好并无意义,关键是你是不是真心想学.不过,为了避免曲高和寡,最好选用的人多的版本。
Git是一个散布式的版本把持工具,本篇文章从先容Git入手下手,重点在于先容Git的基础命令和利用技能,让你实验利用Git的同时,体验到本来一个版本把持工具能够对开辟发生云云之多的影响,文章分为两部分,第一部分先容Git的一些经常使用命令,个中交叉先容Git的基础观点和道理,第二篇重点先容Git的利用技能,最初会在GitHub上创立一个开源项目开启你的Git实战之旅  Git是甚么
  Git在Wikipedia上的界说:它是一个收费的、散布式的版本把持工具,或是一个夸大了速率快的源代码办理工具。Git最后被LinusTorvalds开辟出来用于办理Linux内核的开辟。每个Git的事情目次都是一个完整自力的代码库,并具有完全的汗青纪录和版本追踪才能,不依附于收集和中央服务器。
  Git的呈现加重了很多开辟者和开源项目关于办理分支代码的压力,因为对分支的优秀把持,更勉励开辟者对本人感乐趣的项目做出奉献。实在很多开源项目包含Linuxkernel,Samba,X.orgServer,RubyonRails,都已过渡到利用Git作为本人的版本把持工具。关于我们这些喜好写代码的开辟者嘛,有两点最年夜的优点,我们能够在任何地址(在下班的地铁上)提交本人的代码和检察代码版本;我们能够开许很多多个分支来理论我们的设法,而兼并这些分支的开支几近能够疏忽不计。
  Git1+1
  如今进进本篇文章真实的主题,先容一下Git的基础命令和操纵,会从Git的版本库的初始化,基础操纵和独占的经常使用命令三部分动手,让人人可以入手下手利用Git。
  Git一般有两种体例来举行初始化:
  gitclone:这是较为复杂的一种初始化体例,当你已有一个远程的Git版本库,只必要在当地克隆一份,比方gitclonegit://github.com/someone/some_project.gitsome_project命令就是将git://github.com/someone/some_project.git这个URL地点的远程版本库完整克隆到当地some_project目次上面
  gitinit和gitremote:这类体例略微庞大一些,当你当地创立了一个事情目次,你能够进进这个目次,利用gitinit命令举行初始化,Git今后就会对该目次下的文件举行版本把持,这时候候假如你必要将它放到远程服务器上,能够在远程服务器上创立一个目次,并把可会见的URL纪录上去,此时你就能够使用gitremoteadd命令来增添一个远程服务器端,比方gitremoteaddorigingit://github.com/someone/another_project.git这条命令就会增添URL地点为git://github.com/someone/another_project.git,称号为origin的远程服务器,今后提交卸码的时分只必要利用origin别号便可
  如今我们有了当地和远程的版本库,让我们来试着用用Git的基础命令吧:
  gitpull:从其他的版本库(既能够是远程的也能够是当地的)将代码更新到当地,比方:gitpulloriginmaster就是将origin这个版本库的代码更新到当地的master主枝,该功效相似于SVN的update
  gitadd:是将以后变动大概新增的文件到场到Git的索引中,到场到Git的索引中就暗示记进了版本汗青中,这也是提交之前所必要实行的一步,比方gitaddapp/model/user.rb就会增添app/model/user.rb文件到Git的索引中
  gitrm:从以后的事情空间中和索引中删除文件,比方gitrmapp/model/user.rb
  gitcommit:提交以后事情空间的修正内容,相似于SVN的commit命令,比方gitcommit-m"story#3,addusermodel",提交的时分必需用-m来输出一条提交信息
  gitpush:将当地commit的代码更新到远程版本库中,比方gitpushorigin就会将当地的代码更新到名为orgin的远程版本库中
  gitlog:检察汗青日记
  gitrevert:复原一个版本的修正,必需供应一个详细的Git版本号,比方gitrevertbbaf6fb5060b4875b18ff9ff637ce118256d6f20,Git的版本号都是天生的一个哈希值
  下面的命令几近都是每一个版本把持工具所私有的,上面就入手下手实验一下Git独占的一些命令:
  gitbranch:对分支的增、删、查等操纵,比方gitbranchnew_branch会从以后的事情版本创立一个叫做new_branch的新分支,gitbranch-Dnew_branch就会强迫删除叫做new_branch的分支,gitbranch就会列出当地一切的分支
  gitcheckout:Git的checkout有两个感化,其一是在分歧的branch之间举行切换,比方gitcheckoutnew_branch就会切换到new_branch的分支上往;另外一个功效是复原代码的感化,比方gitcheckoutapp/model/user.rb就会将user.rb文件从上一个已提交的版本中更新返来,未提交的内容全体会回滚
  gitrebase:用上面两幅图注释会对照分明一些,rebase命令实行后,实践上是将分支点从C移到了G,如许分支也就具有了从C到G的功效
<Palign=center>

  gitreset:将以后的事情目次完整回滚到指定的版本号,假定以下图,我们有A-G五次提交的版本,个中C的版本号是bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我们实行了gitresetbbaf6fb5060b4875b18ff9ff637ce118256d6f20那末了局就只剩下了A-C三个提交的版本


12下一页


要多动手,不要怕什么搞坏了怎么办,你不搞坏,不去动手,就永远不会有收获,既然你在linux中是自由的,那就发挥自己的权利;

第二个灵魂 发表于 2015-1-16 12:35:35

来一发Git利用基本篇

常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基的。

  gitstash:将以后未提交的事情存进Git事情栈中,机会成熟的时分再使用返来,这里临时提一下这个命令的用法,前面在技能篇会重点解说
  gitconfig:使用这个命令能够新增、变动Git的各类设置,比方gitconfigbranch.master.remoteorigin就将master的远程版本库设置为别号叫做origin版本库,前面在技能篇会使用这个命令本性化设置你的Git,为你打造举世无双的Git
  gittag:能够将某个详细的版本打上一个标签,如许你就不必要影象庞大的版本号哈希值了,比方你可使用gittagrevert_versionbbaf6fb5060b4875b18ff9ff637ce118256d6f20来标志这个被你复原的版本,那末今后你想检察该版本时,就能够利用revert_version标署名,而不是哈希值了
  Git之以是可以供应便利的当地分支等特征,是与它的文件存储机制有关的。Git存储版本把持信息时利用它本人界说的一套文件体系存储机制,在代码根目次下有一个.git文件夹,会有以下如许的目次布局:
<Palign=center>

  有几个对照主要的文件和目次必要注释一下:HEAD文件寄存根节点的信息,实在目次布局就暗示一个树型布局,Git接纳这类树形布局来存储版本信息,那末HEAD就暗示根;refs目次存储了你在以后版本把持目次下的各类分歧援用(援用指的是你当地和远程所用到的各个树分支的信息),它有heads、remotes、stash、tags四个子目次,分离存储对分歧的根、远程版本库、Git栈和标签的四种援用,你能够经由过程命令gitshow-ref更明晰地检察援用信息;logs目次依据分歧的援用存储了日记信息。因而,Git只必要代码根目次下的这一个.git目次就能够纪录完全的版本把持信息,而不是像SVN那样根目次和子目次下都有.svn目次。那末上面就来看一下Git与SVN的区分吧
  Git与SVN的分歧
  SVN(Subversion)是以后利用最多的版本把持工具。与它比拟较,Git最年夜的上风在于两点:易于当地增添分支和散布式的特征。
  上面两幅图能够抽象的展现Git与SVN的分歧的地方
<Palign=center>



  关于易于当地增添分支,图中Git当地和服务器端布局都很天真,一切版本都存储在一个目次中,你只必要举行分支的切换便可到达在某个分支事情的效果。而SVN则完整分歧,假如你必要在当地实验一些本人的代码,只能当地保护多个分歧的拷贝,每一个拷贝对应一个SVN服务器地点。举一个实践的例子,之前我地点的小组利用SVN作为版本把持工具,当我正在试图加强一个模块,事情做到一半,因为会改动原模块的举动招致代码服务器上很多测试的失利,以是并没有提交卸码。这时候候下级对我说,如今有一个很告急的Bug必要处置,必需在两个小时内完成。我只好将当地的一切修正diff,并输入成为一个patch文件,然后回滚有关以后义务的一切代码,再入手下手修正Bug的义务,比及修正好后,在将patch使用返来。前前后后要完成多个烦琐的步骤,这还不计两头代码产生抵触所要举行的事情量。但是假如利用Git,我们只必要开一个分支大概转回到主分支上,就能够随时入手下手Bug修正的义务,完成以后,只需切换到本来的分支就能够文雅的持续之前的义务。只需你乐意,每个新的义务都能够开一个分支,完成后,再将它兼并到主分支上,轻松而文雅。
  散布式关于Git而言,你能够当地提交卸码,以是在下面的图中,Git有益于将一个年夜义务分化,举行当地的屡次提交,而SVN只能在当地举行大批的一次性变动,招致未来兼并到骨干上形成伟大的风险。Git的代码日记是在当地的,能够随时检察。SVN的日记在服务器上的,每次检察日记必要先从服务器高低载上去。我事情的小组,代码服务器在美国,每次检察小组几年前所做的事情时,日记下载就必要非常钟,这不克不及不说是一个疾苦。厥后我们迁徙到Git上,使用Git日记在当地的特征,我用Ruby编写了一个Rake剧本,能够检察某个详细义务的一切代码汗青,每次只必要几秒钟,年夜小气便我的事情。固然散布式并非说用了Git就不必要一个代码中央服务器,假如你事情在一个团队里,仍是必要一个服务器来保留一切的代码的。
  总结
  本篇先容了Git的基础观点、一些经常使用命令和道理,人人能够实验下手体味一下,下一篇会重点先容Git命令的利用技能,Git附带的工具,最初会在GitHub上创立一个开源项目,敬请等候

上一页12


每一个开发团队都对他的发行版做过测试后放出的.那些国际知名的大品牌更是如此。

乐观 发表于 2015-1-18 15:45:29

清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。

分手快乐 发表于 2015-1-27 09:52:28

编程学习及开发,Linux是免费,开源的操作系统,并且可开发工具相当多,如果您支持自由软件,一定要同广大热爱自由软件人士一同为其不懈努力。

老尸 发表于 2015-2-5 10:33:49

我想即使Linux高手也很难快速准确精练的回答你。

透明 发表于 2015-2-11 12:23:47

Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。

若天明 发表于 2015-3-2 13:22:47

现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。

海妖 发表于 2015-3-11 04:40:02

再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?

小魔女 发表于 2015-3-17 21:08:14

其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。
页: [1]
查看完整版本: 来一发Git利用基本篇