Git和Repo管理使用简要介绍

http://blog.csdn.net/stevenhu_223/article/details/8828130

多仓库代码管理器Repo的安装,使用以及服务器搭建

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 本地分支  远程分支"指令);

Git和Repo管理使用的更多相关文章

  1. Git和Repo管理使用简要介绍

    在Linux平台下进行Android系统项目开发时,需要Git或repo管理. 一. Git和Repo的区别: 1. Git:Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的 ...

  2. Git与Repo入门(转载)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAykAAADuCAIAAACyDd+sAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu ...

  3. git subtree有效管理公共第三方lib

    如果你的项目中有很多第三方的lib,你希望使用它,并且也希望可能对该lib做修改并且贡献到原始的项目中去,或者你的项目希望模块化,分为几个repo单独维护,那么git subtree就是一个选择.gi ...

  4. 【转】Android源码学习(2)使用Git和Repo进行版本管理

    原文网址:http://blog.chinaunix.net/uid-26074270-id-2458828.html Android项目采用Git和Repo进行版本管理.在大多数情况下,Git都可以 ...

  5. 【转】Git与Repo入门----不错

    原文网址:http://www.cnblogs.com/angeldevil/p/3238470.html Git与Repo入门   版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工 ...

  6. 使用git和github管理自己的项目---基础操作学习[转]

    原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...

  7. 学习使用Git 版本控制 代码管理

    title: 学习使用Git 版本控制 代码管理 notebook: 经验累积 tags:Git --- Git 版本控制 学习教程 Git版本控制器,可以作为程序员.计算机科学和软件工程的研究人员在 ...

  8. 使用git进行源代码管理

    git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...

  9. VS2015 Git 源码管理工具简单入门

    1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Meger) 获取 ...

随机推荐

  1. vs2005 QT4.7.1编译 详细

    http://blog.csdn.net/debugconsole/article/details/8230683 网上一搜有QT+2005编译的很多文章,但是都不详细,很多都编不过,特别的在conf ...

  2. 计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和

    程序设计:蒜厂年会 问答问题反馈 只看题面 16.79% 1000ms 262144K   在蒜厂年会上有一个抽奖,在一个环形的桌子上,有 nn 个纸团,每个纸团上写一个数字,表示你可以获得多少蒜币. ...

  3. Java中面向对象的分拣存储

    Student.java package yzhou.map; /** * 学生类 * * * @author 洋 * */ public class Student { private String ...

  4. 笔试之random7生成random10

    /*头条 已知有个Random7()的函数,返回1到7随机自然数,让利用这个Random7()构造Random10()随机1~10. random7构造1~49,限制到1~40,对10求余再+1 */ ...

  5. leetcode155 Min Stack

    题意:模拟一个最小栈,可以push,pop,top,和返回栈中最小值. 思路:已经忘了栈是怎么构建的了,晕···尝试了半天,错误,发现直接用stack数据结构来做最方便,再用一个栈来存最小值.值得注意 ...

  6. Python中sorted函数的用法(转)

    [Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返 ...

  7. nodemon 基本配置与使用

    在开发环境下,往往需要一个工具来自动重启项目工程,之前接触过 python 的 supervisor,现在写 node 的时候发现 supervisior 在很多地方都有他的身影,node 也有一个 ...

  8. UML动态模型(顺序图、协作图、状态图)

    顺序图:用来表示用例中的行为顺序,当执行一个用例行为时,顺序图中的每条信息 对应了一个类操作或状态机中引起转换的事件.顺序图展示对象之间的交互,这些交互是指在场景或用例的时间六中发生的,顺序图属于动态 ...

  9. Android程序设计

    Android程序设计-1 要求安装 Android Stuidio 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,提交代码运行截图和码云Git链 ...

  10. [BZOJ1004](HNOI 2008) Cards

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目 前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张 ...