Android 代码版本控制Git

引言:对于Git的使用已经有一段时间了。不会太多的命令行操作,主要使用基于Android Studio和Eclipse对git进行使用。仓库的创建,代码的提交、更新、冲突解决等等。

时间:2016年7月23日12:12:27

作者:JustDo23

版本:[ Git ][ Windows ][ 2.6.4 ][ 2015-12-14 ]

官网:https://www.git-scm.com/
01. 下载安装

打开Git的官方网站选择自己需要的平台下载最新版的Git并进行安装。

  1. Android Studio中配置

如果需要在Android Studio或Eclipse等开发工具中进行使用,都需要进行相关的配置。在Android Studio中指定git.exe的安装路径。

配置之后点击界面的Test按钮进行测试。执行成功之后会提示当前安装的Git版本信息。

  1. 新建项目

在Android Studio中新建一个Android项目。
在Git服务器GitBlit中同样新建一个项目。

在以上截图中,如果选择了加入RedMe或加入.gitignore后期操作会变得复杂。

创建成功之后会跳转一个提示界面。提示学习Git以及提示代码推送操作步骤。

  1. 仓库连接

服务器仓库建立完成之后,需要在本地建立仓库,同时将本地仓库和服务器的仓库建立连接。

切换到刚才在AS上新建项目的根目录下。
右键 选择 Git Bash Here 。

执行init指令初始化仓库。

git init
执行add指令,将本地仓库与服务器仓库连接。

git remote add origin ssh://admin@192.168.1.149:29418/JustGit.git

  1. 配置AS可以使用Git

在配置完成git.exe的路径之后,还需要进行一步操作,配置之后在AS中才会有Git相关的选项。配置如下:

这一步操作其实在其他地方也有可能会遇到,例如,你从别的地方copy了一份含有git的代码。当你利用AS从本地打开该项目之后就会发现没有git相关操行的入口了。此时,进行上述的操作,就可以了。

操作之后,会在AS左下角的工具栏中发现多出一个Version Control的标签。同时,许多文件都使用红色的。这一点是和SVN类似,文件的颜色表明了文件在Git仓库中的不同状态。

  1. 忽略文件

Git下面有有个.gitignore的文件。这个文件主要是来配置Git将哪些文件进行过滤,进行忽略的。Git是代码版本控制管理的工具,版本控制就是对一个文件进行追踪,进行监控,记录各个版本信息。需要忽略的文件就不需要再进行监控了。

那么,哪些文件需要进行忽略呢?根据个人经验,编译生成的文件,集合环境IDE自动生成的文件等等都可以进行忽略。因为这些文件每更换一个环境就会发生改变。关注这些文件的版本变化,不仅没有任何作用,反而会加重开发者的负担,甚至影响工程的编译和开发。所以忽略这些文件以及忽略文件的配置就显得十分重要。

在AS中切换到Project视图。下图框选的部分都是需要进行忽略的。部分不忽略没有关系,比如gradle文件是可以不进行忽略。

  1. 配置忽略文件

打开根目录下的.gitignore文件,配置如下

*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures

.idea
# 以下是可以选择的 用#进行注释
/gradle
gradle.properties
gradlew
gradlew.bat
打开app目录下的.gitignore文件,配置如下

*.iml
/build
配置成功之后,被忽略的文件颜色从红色变成了黑色。说明配置成功。

  1. 添加代码到Git索引

忽略文件配置完成之后,就可以放心大胆的将代码提交到本地仓库了。提交之前需要进行添加追踪,添加索引的操作。因为代码文件颜色还是红色,红色代表没有添加至索引,需要执行add操作。

继续之前的操作,同样在AS的Project视图下,选择项目的根目录,然后在菜单栏中选择 VCS 选择 Git 选择 Add

这里需要注意的是,选中项目根目录之后,后续操作的操作范围就是整个项目目录结构。如果是选择app目录,那操作范围缩小了。也就是说,先用鼠标选择操作范围,然后再执行相应的操作。这一点还是比较重要的。

  1. 将代码提交本地仓库

将文件添加索引之后,文件的颜色就从红色变成了绿色。继续之前操作,同样选择项目的根目录,然后在菜单栏中选择 VCS 选择 Git 选择 Commit Directory

点击之后,会提示选择需要Commit的文件,以及填写这一次Commit的描述

重要提示,这一步操作的时候,需要认真查看自己提交的代码,确认需要提交的就勾选,否则就不要勾选提交。另外,这里 Git 强与 SVN 的地方,就是提交描述是必须填写的,不填写就无提交。

点击Commit,进行提交,同时会提示一些警告,初学Git的人不用害怕。继续点击Commit

提交成功之后,会在左下角的菜单栏进行提示,界面提示的信息是一定要注意看的。

走到这里不要想着大功告成,代码提交完毕了。在Git中Commit操作只是将代码提交到本地仓库了。将代码提交至服务器仓库,需要通过Push操作才可以。

  1. 更新服务器代码

走到这一步,我们需要将服务器仓库中的代码进行更新。其实按照上边操作服务器现在仍然是个空仓库,没有任何代码可以进行更新。如果之前勾选了加入RedMe或加入.gitignore,那么更新操作就十分必要了。这一步操作进行更新代码,一方面是为了确保万无一失,另一方面是为了强调更新的重要性,强调在以后的使用过程中不要忘记了代码更新。

在Git中通过Pull操作来进行代码更新。在菜单栏中选择 VCS 选择 Git 选择 Pull

点击Pull之后,进入如下界面

点击ssh连接后边的刷新按钮,提示进行连接,进行ssh安全连接

点击Yes进行连接,同时提示输入密码

很显然,没有任何可以进行更新的文件。同时,我们看到本地仓库和服务器仓库已经切实的建立了连接。

  1. 将本地仓库代码提交到服务器仓库

上边已经提到,代码还没有提交到服务器仓库中。在Git中通过Push操作来进行代码更新。在菜单栏中选择 VCS 选择 Git 选择 Push

点击 Push之后,会提示之前Commit的记录,将这些Commit的记录push到服务器,同时还会显示每一次的Commit注释。

点击 Push之后,需要输入密码。

点击 OK之后就开始将代码Push到服务器,成功之后,会在右下角有提示。

接下来,打开浏览器,查看刚才提交的记录。

  1. 小结

走到这一步,完成了git的配置,仓库的创建,忽略文件,代码更新,代码提交等等操作。最重要的就是从无到有,完成了第一次的代码提交。

以上所有操作都是使用管理员账号admin进行操作的。接下来使用另一个账号也就是搭建服务器时候创建的账号just,进行仓库的克隆,代码的提交,更新,冲突的解决等等。

所以明确一下,两个账号相当与两个开发者,通过git仓库URL可以判断使用的是哪个账号。

账号:admin
账号:just
13. 仓库的克隆

克隆服务器仓库到本地需要使用服务器仓库URL进行克隆,打开浏览器,使用账号just进行登录,登录之后可以获取到该账户的仓库URL。

打开Android Studio点击File选择New选择Project from Version Control点击Git

弹出对话框,输入仓库的地址,点击Clone进行仓库的克隆

输入密码,克隆之后,选择使用一个新的界面进行打开

打开刚才克隆的项目之后,会提示Gradle目前没有配置,点击OK进行自动配置

配置结束之后,克隆完毕。可以到磁盘目录查看刚才克隆的项目。

  1. 克隆方法

除了上边的克隆方法外,还有其他一些路径,总体而言都是大同小异。建议使用上边提到的第一种方法。不推荐使用以下的方法。

第二种方法:

第三种方法:

其实这两种是相同的,只不过路径不同。点击Git之后,同样是弹框提示输入仓库地址,不同的是,Clone之后会提示是否打开,

打开之后会提示进行gradle的配置

配置之后依旧是打不开的,因为没有提交本地SDK路径配置的文件local.properties

所以,以这两种方式clone之后,应该使用open an existing Android Studio Project的方法进行项目的打开。

所以,这两种打开路径并不进行推荐。

  1. 一个流程

将仓库克隆之后,就可以进行开发。这里简单整理一个操作的流程:

更新服务器代码
进行本地代码开发
开发结束,更新服务器代码
这一步更新之后,可能更新成功,也可能更新失败。
更新失败,可能是本地某个文件有改动,服务器这个文件同样有改动
更新成功或失败,都可以继续往下操作
本地代码Commit
更新服务器代码
本地带Push到服务器
结束
这个流程是笔者自己总结的,也是比较推荐,其中有多次代码更新,也是Pull操作。在多人协作开发的过程中,服务器的代码是随时有可能变更的,可以在浏览器中进行查看,多次更新代码好处多多。

  1. 实践

使用just账号进行一个流程的实践。

更新服务器代码

在项目中新建一个类JustActivity,当这个类建好之后,会提示将其添加到Git索引

勾选Remember,以后新建的文件会自动添加到索引。添加索引参考以上第八点讲到的知识。

JustActivity的代码如下

/**
* 账号:just
*/
public class JustActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     Log.e("just", "This is just .");
 }

}
更新服务器代码,服务器没有任何变动,这里更新不下东西。更新之后,会在界面左下角工具栏中显示信息,Version Control的标签内显示更新的文件。

Commit操作,参考第九点讲解
更新代码
Push操作,参考第十一点讲解
结束
提交之前需要明确当前用户对服务器仓库是否有权限,没有权限需要进行权限的添加

提交之后,打开浏览器,查看提交的记录。

打开账户admin的项目,进行代码更新。

  1. 冲突解决

冲突的出现:

修改了同一个文件的不同地方
这种冲突解决比较方便,更新之后会自动进行合并。
修改了同一个文件的同一地方
这种冲突需要手动进行合并。
为了演示冲突的解决,两个账号修改进行同一文件同一行代码,账号admin先提交代码,账号just更新遇到冲突,并进行解决。按照如下操作:

两个账号中MainActivity的代码如下

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

账号admin在MainActivity中添加一行代码,结果如下

public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     Log.e("conflict", "This is admin");
 }

}
账号just在MainActivity中添加一行代码,结果如下

public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     Log.e("conflict", "This is just");
 }

}
账号admin进行代码的更新与提交。没有冲突,账号admin很轻松的将代码提交至服务器,打开浏览器可以看到提交记录。

账号just进行代码的更新。因为本地文件和服务器文件都有改动。所以提示更新失败了。

账号just进行代码的Commit

账号just进行代码的更新。会弹框提示代码冲突。

同时,可以看到文件中也有进行标识冲突的地方

进行代码合并可以手动在代码文件中进行修改,也可以点Merge进行对比合并。

通过界面的 双向箭头 和 叉号进行代码的合并

点击界面的Apply完成合并

账号just合并结束,没有任何错误的时候,需要进行代码的Commit

账号just进行Push操作,提交代码
打开浏览器查看提交记录
账号admin进行代码更新
冲突解决完毕。合并结果如下:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.e("conflict", "This is admin");
    Log.e("conflict", "This is just");
}

}
18. 查看历史

如有需要查看某个文件的历史记录,选中文件,右键选择Git选择Show History

  1. 文件还原

文件还原的功能其实就是用来帮我们后悔,或者是回退的操作。这里举出两个使用的地方:

如有对某个文件进行修改之后,不想将其Commit,希望还原回旧版本,选中文件,右键选择Git选择Revert
对于已经添加add的文件,如果你不想继续对其添加索引,可以进行撤销add,方法就是还原

后记

Git的使用基本完成
对于Git命名行操作,并没有接触太多
Git中的分支操作没有涉及

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值