android应用开发-从设计到实现 4-4版本管理

版本管理

前面已经提到了,非常有必要对开发的代码进行管理。那么进行版本管理到底什么时候使用呢?

我总结了使用版本管理的主要场景,有以下3种:

  1. 对于个人开发者,版本管理能记录开发的变迁。它记录了所有文档的修改记录,就好比玩游戏时,我们都会时刻存档,就怕哪一次不小心,控制的角色挂了;假如不存档,出了问题,必须得从新开始。

    如果使用了版本管理,就可以随时保存文档修改的进度。一旦文档任何时候出现了问题,或者希望快速还原到之前某个特定的状态,都可以很容易的切换过去。省去了程序员不少麻烦,毕竟谁也记不清哪年哪月哪日我添加了一段什么代码,目的是什么,而正是这段代码引起了bug,搞得我现在大脑崩溃。

     version_rollback
  2. 当多个程序员开发同一个项目的时候,版本管理工具能很好的协调彼此的工作,让大家开发的代码不会冲突、互相干扰,即使出现了问题,也能很快找到原因。

    比如程序员A在他的开发代码中修改了work.java中第15行的内容,同时程序员B在他的开发代码中修改了work.java中第20行的内容。两人把修改提交保存的时候,版本管理工具,会把两人的修改合并起来。

     modify_different_lines

    如果程序员A在他的开发代码中修改了work.java中第15行的内容,同时程序员B在他的开发代码中也修改了work.java中第15行的内容。两人把修改的内容提交保存的时候,版本管理工具,会发现两人的修改冲突,告诉AB,让他们两协商解决问题。

     modify_same_lines
  3. 文档的修改积累到一定程度,比如说完成了设计的所有内容,就可以设置一个大的节点。后继的开发可以分成两支:一支继续添加新的功能;一支修复现有程序的bug。

     make_dev_branch

管理的工具

为了满足前面提到使用场景,在软件开发的不同历史阶段,出现了不同的版本管理工具:从CVS,到SVN,再到现在使用最广泛的Git

早期的版本控制软件存在的各种缺点,都被后来的代替者解决了。在安卓的开发中,基本上都在使用Git作为版本控制工具。

GitLinux之父Linus Torvalds亲自开发的工具,有着高效的管理能力。它最为基本的运作思路大致如下:

  1. 仓库Repository是一个Git项目的容器,里面存放着文档(包括代码)、以及各个文档的历史修改信息;

     git_repository
  2. 仓库Repository可以存在于网络端,也可以存在于本地电脑当中;

  3. 仓库有两种获取的方式,一个是clone网络端已有的;一个是在本地电脑上自行创建,再通过网络提供给别人访问;

     git_location
  4. 假如对本地的仓库内容进行了修改,要保存修改进度的时候,

    1. 要先将这些修改放到stage当中,
    2. 然后提交-commit到本地的仓库中,此时会产生一个全局唯一识别码-Commit ID,就像f27af79
    3. commit后的内容推送push到网络端,而这个Commit ID就代表你这次提交的唯一标记;
    4. 假如推送的时候,自己修改的代码和仓库中的代码出现了冲突Conflit(因为修改了同一处的代码导致),那么推送者就需要查看代码、找到修改这段代码的提交者商量修改方案,解决冲突;
     git_commit_push
  5. 其他开发者假如clone了这个仓库,就能看到Commit后的各种修改,并通过拉取pull的操作从网络端把更新同步到自己本地的代码当中;

  6. 假如同步代码的过程中,自己的代码和别人的修改发生了冲突Conflit,那么拉取者就需要查看代码、找到修改这段代码的提交者商量修改方案,解决冲突;

     modify_same_lines

除此之外,Git还拥有软件工程方面的实用技巧,例如创建开发分支Branch,给代码打标签Tag

 git_branch_tag

更加详细的内容,可以参考这里。里面还列举出了各个平台下可以选择的图形化工具

Github的使用

Github几乎是全世界程序员都知道的项目托管平台,我们可以把代码放在这个平台上。整个项目的托管就是基于Git的原理实现的。

 github_website

Github在Git管理中充当着网络端的功能,扮演中心服务器的角色,让我们可以随时更新代码、提交代码,分享代码。

Android Studio具有对Github平台的原生支持,让我们在开发的时候能够无缝的加入对软件版本控制的管理功能。

 as_integrate_github
 as_ integrate_github2

Github的注册

打开Github的官网,按照指示很容易的注册一个账号。

登陆账号后,可以看到你现在具有的仓库-Repository

 github_repository

我之前已经创建过几个免费仓库了,所以列表里会将它们呈现出来。如果是新注册的账号,这里应该是空的。

Android Studio的配置

现在我们来把之前创建的天气预报工程,托管到Github上:

  1. 启动工具栏VCS -> Import into Version Control -> Share Project on Github
  2. 在弹出的窗口中,根据提示输入Github上的账户名和密码;
  3. 输入项目的名称WeatherApp和项目描述,选择Share
     as_share_project_to_github1
  4. 确认要添加到管理中的文件(代码、配置、资源等文件),并给这次提交添加描述信息;
     as_share_project_to_github2

刷新Github上的个人主页,可以看到新添加的项目仓库WeatherApp已经出现在那里了,

 as_share_project_to_github_result1
 as_share_project_to_github_result2

此时看看Android StudioVersion Control窗口,就能看到当前的代码管理情况,

 as_version_control_window

Android Studio的Git管理

提交与推送入库

Git版本管理有很多用法,这里我们先介绍两个最常使用的功能commitpush

假如我们修改了WeatherAppMainActivity.java

 as_main_activity_modify_for_git_demo

LocalChanges选项卡会将当前发生了变化的、被版本管理记录的文件列出来,

 as_main_activity_modify_list

点击提交commit按钮,会将修改过的文件放入stage状态,

 as_main_activity_commit1

并展示当前要提交commit文件的状态,让我们再次确认。当我们点击被修改过的文档时,Android Studio会为我们展示当前修改后的文档与修改前的文档有哪些异同。让我们在最后提交之前,再次检查确认一次,

 as_main_activity_commit2

检查无误后,选择提交并推送入库-Commit and Push

 as_main_activity_commit3

假如没有冲突发生,就能看到提交成功,版本控制增加新的节点,

 as_main_activity_commit_result1

Github上项目对应的代码页,也会更新,

 as_main_activity_commit_result2
其他

Android Studio还提供了创建分支Branch、创建标签Tag、以及在不同节点上来回切换的功能,这里就不详细描述了。

因为这些内容如果没有实际的例子,讲起来会很枯燥。我会在开发的过程中根据需要穿插进响应的内容,这样大家理解起来就会非常的方便了。


本文是《从设计到实现-手把手教你做android应用开发》系列文档中的一篇。感谢您的阅读和反馈,对本文有任何的意见和建议请留言,我都会尽量一一回复。

如果您觉得本文对你有帮助,请推荐给更多的朋友;或者加入我们的QQ群348702074和更多的小伙伴一起讨论;也希望大家能给我出出主意,让这些文档能讲的更好,能最大化的帮助到希望学习开发的伙伴们。

除了CSDN发布的文章,本系列最新的文章将会首先发布到我的专属博客book.anddle.com。大家可以去那里先睹为快。


同时也欢迎您光顾我们在淘宝的网店安豆的杂货铺。店中的积木可以搭配成智能LED灯,相关的配套文档也可以在这里看到。

这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值