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 图形化工具推荐

总结

提升源码管理能力,提升底层开发效率
管理好源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大屏走马灯与echarts图表柱状图饼图开发小结

一、使用ant-design-vue的走马灯(a-carousel)注意事项 <!-- 左边的轮播图片 --><a-carousel :after-change"handleCarouselChange" autoplay class"carousel" :transition"transitionName"><div v-for"(item, index) in it…

计算机性能指标之MFLOPS

1. MFLOPS的定义与计算方式 定义&#xff1a;MFLOPS&#xff0c;全称Million Floating-point Operations Per Second&#xff0c;即每秒百万次浮点运算&#xff0c;是衡量计算机系统浮点运算能力的一个重要技术指标。 计算方式&#xff1a;MFLOPS的计算公式为“浮点操作次数 /…

llama_deploy

本文于 240924 翻译整理自: https://docs.llamaindex.ai/en/stable/module_guides/workflow/deployment/ 文章目录 一、关于 🦙`llama_deploy`🤖为什么使用 `llama_deploy`?等等,`llama-agents` 在哪里?二、入门1、安装2、高级部署3、部署核心系统4、部署工作流5、与部…

论文阅读【时间序列】ModerTCN (ICLR2024)

【时间序列】ModerTCN (ICLR2024) 原文链接&#xff1a;ModernTCN: A Modern Pure Convolution Structure for General Time Series Analysis 代码仓库&#xff1a;ModerTCN 简易版本实现代码可以参考&#xff1a;&#xff08;2024 ICLR&#xff09;ModernTCN&#xff1a;A Mod…

解决hbase和hadoop的log4j依赖冲突的警告

一、运行hbase的发现依赖冲突的警告 这警告不影响使用 二、重命名log4j文件 进入HBase的lib包下&#xff0c;将HBase的log4j文件重命名&#xff0c;改成备份&#xff0c;这样再次运行hbase的时候&#xff0c;就没有依赖冲突了。 三、冲突成功解决

C++模版类实现栈

text.h #ifndef TEXT_H #define TEXT_H#include <stdexcept> // 用于 std::out_of_rangetemplate <typename T> class MyStack { private:T* data; // 指向底层数组的指针int capacity; // 容量int top; // 栈顶索引int size; // 当前元…

Iterm2配置主题和Oh-My-Zsh

文章目录 一、配置主题1.1 安装使用git1.2 安装手册1.2.1 激活使用主题 二、配置oh-my-zsh2.1、oh-my-zsh插件2.2、oh-my-zsh主题 [Zsh](http://zsh.org/)2.2.1、Install using Git2.2.2、Install manually2.2.3、Activating theme2.2.4、Install using [zplug](https://github…

基于Hive和Hadoop的图书分析系统

本项目是一个基于大数据技术的图书分析系统&#xff0c;旨在为用户提供全面的图书信息和深入的图书销售及阅读行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以…

光耦合器在信号传输和隔离中的作用

光耦合器&#xff0c;也称为光隔离器&#xff0c;是电子电路中的关键元件&#xff0c;它结合了两个基本功能&#xff1a;信号传输和电气隔离。它们允许信号在电路的不同部分之间传递&#xff0c;同时保持它们彼此电气隔离。此功能对于保护敏感的低压控制电路免受更高电压、噪声…

算法实战:剖析微服务接口鉴权限流背后的数据结构和算法

算法实战:剖析微服务接口鉴权限流背后的数据结构和算法 在当今的微服务架构中,接口鉴权和限流是保障系统安全和稳定运行的重要手段。它们背后涉及到一系列的数据结构和算法,本文将深入剖析这些技术,通过具体案例让你更好地理解其工作原理。 一、问题背景 随着微服务架构…

群晖套娃:群晖+飞牛fnOS二合一,群晖nas安装飞牛fnOS系统实录(飞牛fnOS初体验,如何挂载网盘视频,轻松实现影视刮削)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 飞牛fnOS 📒📝 什么是飞牛fnOS?📝 准备工作📝 安装飞牛fnOS📝 影视刮削⚓️ 相关链接 ⚓️📖 介绍 📖 最近有一款很火的国产NAS系统吸引了不少用户的注意。你是否曾想过,将这种新兴系统安装到你的群晖设备上,实…

一站式自闭症全托服务,让孩子全面发展

在世界的温柔怀抱中&#xff0c;有一处被希望之光照亮的圣地——星贝育园&#xff0c;这里不仅仅是一个自闭症儿童的全托康复中心&#xff0c;更是无数家庭梦想启航的地方。在这里&#xff0c;每一个孩子都被视为独一无二的星辰&#xff0c;他们或许在成长的旅途中暂时迷失了方…

“数字武当”项目荣获2024年“数据要素×”大赛湖北分赛文化旅游赛道一等奖

9月26日&#xff0c;由国家数据局、湖北省人民政府指导的首届湖北省数据要素创新大会暨2024年“数据要素”大赛湖北分赛颁奖仪式在湖北武汉举行。由大势智慧联合武当山文化旅游发展集团有限公司参报的武当山“数字武当”项目&#xff0c;荣获文化旅游赛道一等奖。 据悉&#x…

一次阿里云ECS免费试用实践

必坑指南 域名注册了&#xff0c;但是试用版无法完成ICP认证的流程 外网不能访问&#xff0c;推荐使用香港地区–自己就是坑在了杭州 阿里云的网站界面有点太复杂了&#xff0c;经常找不到自己想要的界面 为什么使用ECS ECS 一个在云端的弹性计算服务器。 可以支持对外公网映…

VBA技术资料MF205:移动工作表时名称重复的处理

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

AIGC: 10 AI转文服务器的搭建过程记录

上图是台风席卷城市&#xff0c;现在企业的服务基本都是混合部署&#xff0c;云计算厂商的机房往往可以提供比较好的保护&#xff0c;一般在地下&#xff0c;扛多少级地震&#xff0c;扛多少级台风&#xff0c;而自建机房&#xff0c;往往写字楼经常停电&#xff0c;网络运营上…

Spring:强制登陆与拦截器

1.只使用session验证 &#xff08;1&#xff09;第一步&#xff1a;用户登陆时存储session ApiOperation("用户登陆") PostMapping("/login") public AppResult login(HttpServletRequest request,RequestParam("username") ApiParam("用…

计算机毕业设计之:基于uni-app的校园活动信息共享系统设计与实现(三端开发,安卓前端+网站前端+网站后端)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Python学习(3):画散点图和箱线图

1. 散点图&#xff08;matplotlib库&#xff09; 1.1 代码示例 import matplotlib.pyplot as plt# 准备数据 x [1, 2, 3, 4, 5] y [2, 4, 6, 8, 10]# 绘制散点图 plt.scatter(x, y)# 添加标题和标签 plt.title("散点图示例") plt.xlabel("X 轴") plt.y…

STM32 HAL库的基本定时器配置步骤

STM32有基本定时器、通用定时器、高级定时器三种定时器&#xff0c;我们下面讲解的是STM32F429的基本定时器Timer6 实现的功能&#xff1a;定时器500ms,产生定时器溢出中断&#xff0c;在中断服务函数中反转LED灯的亮灭 一、配置定时器基础工作参数 使用HAL_TIM_Base_Init() …