Android源码管理
文章目录
- 需求及场景
- 需求
- 困难疑惑点
- 源码管理方式及过程
- 基本仓库
- 管理方式
- 常用源码git 命令
- git init
- 添加.gitignore
- git add all
- git add 文件名称
- git commit -a -m "提交内容说明"
- git status
- git log
- git reset --hard
- git clean -fd
- 实际场景,从一个项目切换到另外一个项目如何做
- git 相关内容学习推荐
- 图形化git 工具
- 工具推荐git-gui
- 高逼格界面工具推荐
- 总结
需求及场景
需求
- 作为Framework、底层开发工程师,日常工作中普通用户情况下,如何管理Android平台源码;
- 日常开发提交源码,如何清晰查看Android提交记录,方便check 修改的内容
困难疑惑点
- 以前是服务端、应用端工程师,转做系统在接触几百个G的系统源码过程中,代码管理有点压力了,每次命令 比如 git status
没那么快;编译一次编译文件很多,源码如何进行git管理不清楚 - 开发过程中,不像服务器、应用端、前端面向的是windows/mac 系统,进行IDEA桌面开发,git
都有自己的客户端直接操作,或者直接命令。 但是系统底层开发过程中,入口通过SSH连接的一个窗口,源码管理更加懵了,要怎么搞、全部命令来查看修改内容、merge 内容也不太方便。
源码管理方式及过程
这里暂不讨论SVN了,毕竟git 用的多且方便,这里介绍一种管理方式,自己比较常用的方式
基本仓库
代码有一个基本仓库、公共仓库一说,不同项目的所有一致性修改作为一个基本仓库。日常工作中一套代码会有大几十个客户或者上百个客户。每个客户都有自己定制的内容,对于非定制的内容 就是一个基本仓库。我们维护的其实就是基本仓库和每个项目定制的修改内容
管理方式
- 在仓库中创建一个目录,存放多个项目修改的内容
- 每一个项目单独创建一个目录,放置修改的内容
- 每次提交项目定制的修改内容,如果是公版修改作为公版修改内容
- 如果需要切换项目,重置公版到最新的修改,在每个项目文件中,一键copy 修改的内容到指定的目录。这样就实现了切换项目的目的
常用源码git 命令
在上面管理方式中,已经我们自己维护一套代码过程中,基本的git 命令如下。
git init
初始化一个git仓库,会创建一个.git目录,包含该仓库的所有元数据,如暂存区数据等
场景:这个是基础命令,当我们拿到系统源码时候,如果自己搭建git 项目管理,这个应该是第一步。
添加.gitignore
对于生成的编译文件目录、生成的文件目录是不需要添加到git 版本控制中的,比如我自己简单的一个.gitignore
wfc@wfc-X99:~/wfc/Android/sourc_android12/rk_android12.0_sdk$ cat .gitignore
out/
rockdev/
rockdev
out
git add all
比如,上面步骤后,讲所有文件添加到版本控制中去
git add 文件名称
讲某个文件添加到版本控制中去
git commit -a -m “提交内容说明”
ait add后,所有的文件其实都是缓存状态,或者 修改的文件当前也是出于缓存状态,提交 commit
git status
查看当前仓库(当前分支)的状态,如有哪些文件处于暂存区需要commit。
git log
查看提交记录(当前分支)
wfc@wfc-X99:~/wfc/Android/sourc_android12/rk_android12.0_sdk$ git log
commit d40329de90ee17911fc77d4d59a3972b9f365a0f (HEAD -> master)
Author: itjavawfc@163.com <itjavawfc@163.com>
Date: Fri Sep 27 22:03:40 2024 +0800
默认横屏显示功能实现
commit df4abcabb328a44e244ec6b125267aea31870459
Author: itjavawfc@163.com <itjavawfc@163.com>
Date: Fri Sep 27 09:22:15 2024 +0800
代码调试
commit 3ed636ed1b22db542891ecabe48cd2dc71dd0d91
Author: itjavawfc@163.com <itjavawfc@163.com>
Date: Sat Sep 21 00:37:47 2024 +0800
初始化代码仓库
wfc@wfc-X99:~/wfc/Android/sourc_android12/rk_android12.0_sdk$
git reset --hard
重置版本库所有文件到最后一次commit(回退版本,不能回退指定文件,工作区文件也回退,清除暂存区)。
git clean -fd
-f 参数表示“force”,将会强制删除文件和目录。-d 参数表示除了删除文件外还要删除空目录
一旦执行了git reset --hard和git clean -fd,所有未提交的更改都将丢失。在执行这些操作之前,请确保你不需要这些更改。
实际场景,从一个项目切换到另外一个项目如何做
- git reset --hard 重置到当前版本到最近一次修改
- git clean -fd 清除当前生成的新文件
- git status 在执行上两个命令时候已经是clean 最新状态了,git status 确认下当前是否clean 状态
- git pull 拉取最新代码
- cd 到 项目目录 ,copy 项目到公版
- ./build cmd 编译项目
git 相关内容学习推荐
git简明指南
git教程-菜鸟教程
git官网
git分支开发原理
剖析git实现机制
图形化git 工具
为什么要用图形化界面工具,也可以不用,直接git 命令查看。 但频繁麻烦的git 操作,显示结果有的时候不直观,没法一目了然,显示也不友好,功能不强大。
工具推荐git-gui
- 安装:sudo apt-get install git git-gui
- 使用:打开终端,在想打开git的目录下运行git gui 即可
高逼格界面工具推荐
Git 图形化工具推荐
总结
提升源码管理能力,提升底层开发效率
管理好源码