阅读本文大约需要10分钟
拉取源码常用git命令介绍
克隆项目至本地
以GitHub中的UnitPro(为演示的例子)为例,选择Clone with HTTPS方式复制克隆地址,不选择SSH方式的原因见HTTPS和SSH的区别和使用。
获取到https url后,在合适的位置,打开Git Bash窗口,输入命令”git clone ‘https url’ “即可克隆指定项目到本地。
HTTPS和SSH的区别:
在管理Git项目上,可以通过https url或ssh url来克隆项目至本地。
使用https url克隆对初学者较为方便,复制https url然后到Git Bash里面直接用clone命令克隆到本地即可,但每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。
而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,若想要使用SSH url克隆,必须是这个项目的拥有者。否则是无法添加SSH key的,另外ssh默认fetch和push代码都不需要输入账号和密码,也可以另外进行设置成需要输入的方式。
这就是最开始总是以为没有权限拉取项目源码的原因。
常用git命令
命令 | 功能 |
---|---|
git branch -a | 查看远程仓库所有分支 |
git branch | 查看所有本地分支 |
git branch -d + 分支名 | 删除指定分支 |
git checkout +分支名 | 将当前本地分支切换至指定分支 |
git checkout -b +分支名 | 新建本地分支,相当于git branch +分支名 和 git checkout +分支名 |
git checkout +文件路径 | 还原指定文件与远程版本一致 |
git status | 查看当前分支的本地修改情况 |
git fetch | 从远程获取最新版本到本地,不会自动merge |
git pull | 从远程获取最新版本并合并到本地, 相当于git fetch 和 git merge |
git merge | 合并分支 |
git add | 把当前目录下的所有文件加入暂存区域 |
git commit -m “msg” | 添加代码提交信息,此时暂未上传到远程 |
git commit -a -m “msg” | 将当前新增信息加入暂存区,并添加提交说明信息,相当于git add + git commit -m “msg” |
git push | 将本地新增内容上传到远程服务器 |
git stash | 保存当前操作,不想commit当前操作,且需要切换分支时可以暂存当前操作。git stash save some_info,指定some_info为暂存信息添加备注 |
git stash -list | 查看所有暂存的信息 |
git stash pop stash@{num} | 恢复序号为num的暂存信息到本地,num可通过list命令查询,恢复完成后,list中就删除了该记录 |
git stash clear | 清空所有暂存记录 |
此处仅罗列常用的简单命令,详细使用可以参考Git-Book,不想使用命令也可以使用Git-GUI 或 source-tree 或 GitHub 等图形界面工具。
正确配置Android工程
在Android Studio中Open上一节中clone下来的项目,需要说明的是,并不是所有的项目都会附带本地项目的依赖,大部分项目依赖均可自动从远程仓库中compile。
但有一些项目可能会依赖到一些本地库,就需要先将依赖的库配置好。
为了演示需要,我在UnitPro的another分支添加了Logger的本地工程依赖。
本地工程依赖的好处:
通过compile project导入本地工程,可省去打jar包或发布的重复性流程,被依赖工程在本地修改后,所引用的工程无需修改(若引用jar包则需重新导入)即可自动更新修改。
配置步骤大致如下:
1.同上节,将该工程clone到本地,切换到another分支
2.查看app下gradle依赖所依赖的本地project,即使用compile project配置的工程
3.打开settings.gradle查看上步工程名所对应的路径配置
4.根据本地依赖project路径配置好工程
Android签名证书SHA1
在开发调试时,从Android Studio或者Eclipse中直接运行的APP在打包时使用了开发工具默认的开发版(debug)签名文件keystore,开发版签名文件对应有唯一的SHA1。
SHA1的获取命令为:keytool -list -keystore debug.keystore
操作如下:
备注:对签名的了解较少,希望后期能有进一步了解。
Android源码定位技巧
熟悉命名
熟悉客户端大致功能点及了解源码的基本Acitivity和Fragment命名(命名即可)
直接定位
若能从功能点猜测出对应界面的Activity或Fragment,则直接定位到该类,从左侧Project选择或Ctrl+Shift+R搜索定位
流程定位
若对命名不熟悉,则可按照以下流程及方法定位