Git和Repo管理使用简要介绍
在Linux平台下进行Android系统项目开发时,需要git或repo管理。
一. Git和Repo的区别:
1. Git:Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
2. Repo: Repo是谷歌用Python脚本写的调用git的一个脚本。主要是用来下载、管理Android项目的软件仓库(也就是说Repo是用来管理给Git管理的一个个仓库的)
二. Git库管理项目:
1. 一般在企业的Android开发中,公司会给程序员分配一个远程服务器,企业本身也有一个代码库(该代码库集合了公司各种不同手机项目的Android系统代码)。程序员可以在自己的远程服务器上,从公司的代码库下拉相应的手机项目代码,然后进行基于Android源码的开发、维护、模块单编译(mm)、全编译(make -j4)等各种企业需求的开发工作。
2. 程序员开发完成需求时,需要将开发成果保存在公司的代码库,而这个保存的过程是需要一系列的安全性工作的。首先,程序员开发和维护的成果,需要经过项目负责人(主管、经理、总监之类)的评审、验证才能最终提交到公司的代码库。
3. 这个代码评审、核查的过程,由Gerrit(代码评审工具)实现:
Gerrit简介:
1). 基于 Web 的代码评审和项目管理的工具,面向基于 Git 版本控制系统;
2). 为 Git 引入强制性的代码审核机制,非特别的授权设置,向 Git 版本库的推送(Push)必须要经过 Gerrit服务器,经过审核流程后,才能正式纳入代码库;
3). 每一次提交将对应一个评审任务;
4). 通过特殊的分支提交评审任务(refs/for/….);
5). Gerrit 提供的 Git 服务的端口并非标准的 22 端口,缺省是 29418 端口;
6). Gerrit缺省的Http端口是8080。
4. Git常用指令操作:
1). 查看当前代码修改状态:git status。如下图: 注:MSM7x27A-ICS-AP为整个Android系统源码所在主目录
上图输入git status指令后,显示的是你之前更改的代码文件(包括文件所在路径)
2). 查看当前项目远程代码库的提交记录:gitk
输入gitk指令后,会跳出相应的记录信息的窗口,通过该窗口可以查看其它程序员对本项目的远程代码提交记录。
3). 保存更改的代码状态:git stash (或者git stash save "命名");查看保存记录:git stash list;还原保存的更改:git stash apply (或者git stash stash@{x});清除保存的更改记录:git stash clear;
执行git stash 指令后,再执行git status查看代码更改状态,之前modified的代码记录将不会显示,代码回到更改之前的状态。
执行git stash指令后,再执行git stash list,将看到如下的信息:
stash@{0}:..............
stash@{1}:...............
.
.
.
stash@{0}开头为最近的一次保存记录。有时候为了方便记忆和还原我们需要还原的修改记录,这时候git stash save "xxx" (xxx由自己命名)就派上用场了,执行该指令后 ,我们再执行git stash list,将看到类似如下信息:
stash@{0}:..............
stash@{1}:...............:xxx
.
.
.
这样,我们就可以根据xxx的标记来执行git stash apply stash@{1} 还原我们之前保存的更改记录了。
4). 服务器本地代码同步更新远程库的代码:git pull --rebase ;
在执行git pull --rebase更新代码之前,需执行git status查看当前本地代码有没有修改记录,若有,则执行git stash 保存修改记录,更新完后执行git stash apply恢复更改;如没有,则直接执行git pull --rebase;(如果本地有修改记录,则更新会出错)。
5). 一次性提交修改项(modified):git commit -a;接着执行"git push origin HEAD:refs/for/远程分支名",把代码提交到临时代码库(为通过评审),然后登录Gerrit,添加评审人员(Add Reviewer),通过评审,提交到公司远程代码库;
6). 一次性提交修改项(modified)和添加项(add):git add . (注意有小点); 单独把修改项或添加项提交:"git add 文件(包括所在路径)";
7). 提交删除文件:git rm ;
8). 查看远程代码提交记录节点信息:git log (按q字母退出); 执行git log后会得到提交记录信息和相应的commit id值,如果需要回退到该程序员修改提交的记录信息时的代码,则执行"git reset --soft id值";
9). 若代码提交后(已经执行git push ... 操作),需要回退到提交之前的状态:登录Gerrit-->找到自己提交的Changes-->选择Abandon Change-->回到远程服务器代码终端操作,执行git reset --soft HEAD^
10). 把修改或删除的文件回退到原状态:"git checkout 文件名(包括路径)";回退全部:git checkout . (注意有小点)
11). 查看当前代码所在的本地分支(带有*的为当前本地代码的分支):git branch ;
12).将把地代码切换到远程对应的分支:"git checkout -b 本地分支名 远程分支名";
如执行git branch后出现如下信息:
* name1
name2
name1为当前代码的本地分支,name2为之前已经切换到自己对应的远程代码分支的本地分支。这时候,如果需要从name1切换到name2,那么就不需要再执行git checkout -b name2 yyy(yyy为远程分支名)指令了,直接执行git checkout name2;就可以实现切换到name2分支;
13). 查看所有分支(包括本地和远程):git branch -a;
三. Repo管理:
Repo实现管理多个git库,一般是多个项目共用一个主分支,而针对项目共用主分支的代码都可以在overlay目录里开发、维护(overlay目录所在远程分支为对应项目的分支,而不是当前共用的主分支);然后提交到对应的项目代码分支;
1.Repo 相关脚本下载操作,相关匹配完成后;下拉Repo管理的项目代码:repo init -u gitserver:manifests.git -m xxx.xml (xxx.xml文件决定初始化的项目)-->repo sync--->创建xxx项目对应的分支:repo start xxx --all
(--all意为将所有模块都归为当前xxx分支下)
2. 查看当前项目代码所在的分支:repo branch;
3.查看当前项目相应目录代码所在的分支情况(可能共用主分支或者在自己的分支),如查看framework/base下的代码所在分支情况:执行 cd framework/base 进入base目录-->执行git branch -a查看;如查看package/apps/Music系统应用模块所在的分支情况: 执行cd package/apps/Music--->执行git branch -a;
4.删除不用的本地分支:“repo abandon 分支名” (同“git branch -d 分支名”)
5.自动查找项目所在的分支(在没执行repo start xxx --all的情况下),然后进行切换:repo forall -c git checkout -b xxx 项目对应的远程分支名(最好是本地分支和远程分支同名,除主分支外)
6.Repo实现切换分支:执行cd .repo/manifests--->执行ls查看项目对应的xxx.xml文件--->执行cd -回到主目录--->执行repo sync同步更新代码--->执行”repo start xxx(本地分支名) --all“创建相应的本地分支(或者执行"repo -c -p git checkout 本地分支 远程分支"指令);
————————————————
版权声明:本文为CSDN博主「stevenhu_223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/stevenhu_223/article/details/8828130
Git和Repo管理使用简要介绍相关推荐
- git(5)---Git 与Repo 管理Android代码
Git 与Repo 管理代码 要处理 Android 代码,您需要同时使用 Git 和 Repo.在大多数情况下,您可以仅使用 Git(不必使用 Repo),或结合使用 Repo 和 Git 命令以组 ...
- Android窗口管理服务WindowManagerService的简要介绍和学习计划
在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架.事实上,如果我们从整体的角度来看,Android应用程序窗口的实现要更复杂,因为它们的类型和作用不同,且会相互影响.在 ...
- 使用repo和git进行工程管理
以前一直用cvs/svn,现在转用repo和git做工程管理,一直迷糊当中,今天请同事科普了一下,以下纯粹是从一个工程师简单使用的角度,配合自己的见解总结而成,可能很多地方不准确,甚至不正确,以后如有 ...
- git与repo与scp
git与repo与scp Ubuntu下git的安装与使用 安装 使用 git生成patch和打patch 生成patch 应用patch 打patch发生冲突 git分支 这些是各种场合常见的 Gi ...
- git(17)---repo的基本认识
repo的基本认识 1.定义. Repo是谷歌用Python脚本写的调用git的一个脚本.主要是用来下载.多个Git仓库. 而Android项目那是由多个git仓库组成的,它有非常多的分支. 如:an ...
- Linux内存管理:Swap介绍以及如何使交换具有可扩展性
目录 一.swap分区 1. swap分区的创建 2. swap的数据结构 二.swap out 1. 回收流程 2. swap slot cache 3. ssd查找算法 三.swap in 1. ...
- git入门----repo的基本认识
1.定义. Repo是谷歌用Python脚本写的调用git的一个脚本.主要是用来下载.多个Git仓库. 而Android项目那是由多个git仓库组成的,它有非常多的分支. 如:android/fram ...
- Ubuntu20.04软件主要管理工具包详细介绍:离线安装dpkg、在线安装apt、源码安装(适用于Github程序下载)
Ubuntu20.04软件主要管理工具包详细介绍:离线安装dpkg.在线安装apt.源码安装(适用于Github程序下载) 一.离线安装dpkg命令 二.在线安装apt命令 三.软件包的源码安装过程 ...
- Git Flow 分支管理简述
概述 Git 是什么 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...
最新文章
- java期末考试试卷及答案文库_JAVA期末考试试卷及答案
- Java多线程(九)—— interrupt()和线程终止方式
- Spring Security 实战干货:自定义配置类入口 WebSecurityConfigurerAdapter
- JAVA服务治理实践之无侵入的应用服务监控--转
- unity3d 截屏
- 中的实践 中兴_中兴通讯王卫斌:一步到位 构建5G 2B新商业
- 将VC++6.0的代码迁移到VS2005常见问题总结(Window核心编程第五版以前代码在VS2005无法编译的解决方案)...
- Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模
- 操作系统的线程和进程的区别_面试官:你熟悉多线程嘛?线程跟进程有什么区别?...
- Pytorch+Tensorboard混淆矩阵可视化
- hbuilderx的快捷键整理pdf_47个电脑快捷键大全,让你工作提升100倍,一般人我不告诉他...
- 职业经理人-授权后才是管理的开始
- ubuntu dock栏添加应用启动图标
- shadow 文件详解
- 敏感性分析—Sobol
- Excel中通过FREQUENCY统计分数段
- h61 nvme硬盘_切割SN520amp;amp;对比主流NVME2242amp;amp;无硬盘盒迁移系统
- PHP发送邮件SMTP发邮件,超简单引用,CtrlCV即可实现邮件反馈系统
- Electron 主进程、渲染进程及进程间的通信
- Nginx 502 Bad Gateway 的错误的解决方案