草庐IT

代码管理工具知多少?来看看Git怎么用吧

一一哥Sun 2023-07-21 原文

一. 代码管理工具简介

说到代码工具,许多工作了的小伙伴一定很有发言权。因为我们在实际开发环境中,就代码的复杂度和逻辑度,对于开发工程师来说,都是极具挑战性的。如果单靠个人来完成单个项目的整体开发,那无疑是难上加难,因此就有个词孕育而生了——“协同开发”。也就是说,我们有许多个开发工程师,有的负责项目的这个模块,有的负责项目的那个模块。最后当我们将各自模块完成后,将其提交到远程,并进行代码合并。这个协同工具不仅减少了我们项目开发的难度,也加快了项目的开发进度。

二. 代码管理工具

那既然大家现在知道了代码管理工具的由来,接下来我们就再来了解几个比较著名的代码管理工具吧。

1. CVS

cvs(Concurrent Versions System)是代码管理工具诞生以来,最早出现的一名成员了。不过可惜的是拥有悠久历史的它,不得不在当前的时代浪潮下安静的退出舞台。cvs使用Client/Server架构,项目小组的每一位开发人员都会去记录到一个CVS Server档案库中,当小组项目开发人员编辑完自己的CVS Server后,会将其上传到一个公共的CVS Server档案库中。

2. SVN

SVN(subversion),据悉SVN的作者,实际上就是以前 CVS中的一个开发者,后来出来自己去另开发写了个SVN。SVN后台替代了CVS(比例相对来说 比较少了)。SVN安装后,会有公共地址VIsuall SVN Server的url。导入后会在其项目文件下创建.svn,用户开发小组在修改编写好自己所负责的模块后,将代码保存到自己的.svn中,再通过.svn这个文件到SVN Server提交上传和拉取文件。

3. Git

GIt是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。目前也是最流行的一个代码管理工具,市场上大部分的公司在代码管理工具选择上都对其独有的青睐。Git在安装后,也是通过url去找到远程库,并在本地生成一个.git本地库。项目小组开发人员在开发工具上配置好git后,在负责对应模块编写开发完成后,可将其提交到本地库。然后将远程项目先拉取一次,拉取时,可选择分支,再通过提交到本地库信息,将其推送到远程所选对应分支中。

三. Git的优点

在了解完当前一些主流的代码管理工具后,小伙伴们就会想到一个问题,各种代码管理工具它们的工作流程大体都很相同,没有太大的变化,那我们为什么会去选择Git呢?它的好处有哪些呢?

首先,最主要的就是Git是分布式的,它有一个GitFlow工作流,也是现在大部分企业对其独有青睐的原因:

  1. 在定义时,默认有一个主分支(master),这个分支在创建后一般都是不会动的,只有代码最终合并时才会进行使用;

  2. 第二个就是我们的开发分支(develop),所有人提交代码的分支,这个分支是我们日常项目开发中最为常用的;

  3. 第三个就是我们的测试分支(release),这个分支就是项目的测试分支。develop上开发好代码之后会基于develop克隆一个release分支,这个release分支最终用来给测试人员用,专门测试用的;

  4. 第四个就是我们的bug修复分支(bugfix),项目开发完成之后,部署到公网之后,我们的项目如果出现bug,那么这个时候,就会基于我们的master分支克隆一个bugfix-v1.0分支,来进行bug的修改。修改完成之后再合并到release分支进行测试,测试完成再合并到develop分支。develop没有问题,合并到master,这样最终实现项目的迭代。清晰定义的各类分支,有效的解决了项目中的冲突和迭代问题,对于bug的处理也能够有及时有效的应对措施。

其次,Git是将内容按元数据方式存储,而SVN和CVS则是按文件。Git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

四. Git的使用

接下来我们就以IDEA为例,给大家讲解Git的具体操作。

1. 创建本地库

 2. 让Git进行管理

 3. 提交本地库

4. 先将远程代码拉取(pull)下来一次,再提交(commit)

 以上就是壹哥给大家讲解的Git使用教程,现在你学会了吗?如果你想要获取更多的干货内容,可以在评论区给壹哥留言哦!!!

有关代码管理工具知多少?来看看Git怎么用吧的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  4. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  5. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  6. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  7. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  8. ruby - Ruby 中的隐式返回值是怎么回事? - 2

    所以我开始关注ruby​​,很多东西看起来不错,但我对隐式return语句很反感。我理解默认情况下让所有内容返回self或nil但不是语句的最后一个值。对我来说,它看起来非常脆弱(尤其是)如果你正在使用一个不打算返回某些东西的方法(尤其是一个改变状态/破坏性方法的函数!),其他人可能最终依赖于一个返回对方法的目的并不重要,并且有很大的改变机会。隐式返回有什么意义?有没有办法让事情变得更简单?总是有返回以防止隐含返回被认为是好的做法吗?我是不是太担心这个了?附言当人们想要从方法中返回特定的东西时,他们是否经常使用隐式返回,这不是让你组中的其他人更容易破坏彼此的代码吗?当然,记录一切并给出

  9. ruby - 怎么来的(a_method || :other) returns :other only when assigning to a var called a_method? - 2

    给定以下方法:defsome_method:valueend以下语句按我的预期工作:some_method||:other#=>:valuex=some_method||:other#=>:value但是下面语句的行为让我感到困惑:some_method=some_method||:other#=>:other它按预期创建了一个名为some_method的局部变量,随后对some_method的调用返回该局部变量的值。但为什么它分配:other而不是:value呢?我知道这可能不是一件明智的事情,并且可以看出它可能有多么模棱两可,但我认为应该在考虑作业之前评估作业的右侧...我已经在R

  10. ruby-on-rails - 我该怎么办 :remote location validation with CarrierWave? - 2

    我在我的Rails3示例应用程序上使用CarrierWave。我想验证远程位置上传,因此当用户提交无效URL(空白或非图像)时,我不会收到标准错误异常:CarrierWave::DownloadErrorinImageController#createtryingtodownloadafilewhichisnotservedoverHTTP这是我的模型:classPaintingtrue,:length=>{:minimum=>5,:maximum=>100}validates:image,:presence=>trueend这是我的Controller:classPaintingsC

随机推荐