Download presentation
Presentation is loading. Please wait.
1
GERRIT使用说明 配置管理-高峰
2
目录 Git学习 账号注册 Repo配置 获取下载代码命令 Repo 命令
3
我们自己Git服务器上高通基线-master分支
开发模式 高通服务器 我们自己Git服务器上高通基线-master分支 主分支-基于高通基线拉出-基线稳定分支 对应定制项目A分支 对应定制项目B分支
4
Git学习 在你自建的Git本地仓库中,有三个区域:工作目录、暂存区、HEAD 工作目录: 有.git文件夹的目录;
暂存区(index或者stage):在本地目录中被git跟踪的文件,类似一个缓存区域,临时保存你做的改动; HEAD:指向最近一次提交后的结果。 用一个比喻来描述一下这三个区域: Git工作流:假设你是一个学生,你需要写一门课的作业,作业有好几张试卷和几本练习题,写好之后把作业交给老师。 你把所有作业放在桌上开始写,这里就是你的“工作目录” 当你写完一张试卷,把它放进你的书包里,它就进入了“暂存区” 等你把作业都写完了,放在书包里带到学校,全部交给了这门课的老师,他就是HEAD所指向的位置
5
Git学习 工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪 未跟踪的文件的改动不受到Git的版本控制
已跟踪的文件,即被纳入版本控制的文件,又分为未修改(unmodified) 、已修改(modified)、已暂存(staged)三种状态。 当在工作目录中新加入一个文件时,它处于未跟踪状态,这表示其没有纳入Git的版本控制。 通过 git add 命令可以将其加入跟踪,并同时放入暂存区。 一个已经被跟踪的文件,如果没有做过新的修改,就是未修改状态。 一旦对其做了改动,就变成了已修改状态。通过 git add 命令可以将已修改的文件放入暂存区。 初次克隆某个仓库时,工作目录中所有文件都是已跟踪且未修改的状态。 git commit 命令会将暂存区中的文件提交至HEAD所指向的分支。当被commit之后,暂存区的文件将回到未修改状态。
6
几种后悔药 撤销一个服务器上提交 场景: 你刚刚用git push将本地修改推送到了远程服务器,这时你意识到在提交中 有一个错误。你想撤销这次提交。 撤销命令:git revert SHA 原理:git revert将根据给定SHA的相反值,创建一个新的提交。如果旧提交是 “matter”,那么新的提交就是“anti-matter”——旧提交中所有已移除的东西将 会被添加进到新提交中,旧提交中增加的东西将在新提交中移除。 这是Git最安全、也是最简单的“撤销”场景,因为这样不会修改历史记录——你 现在可以git push下刚刚revert之后的提交来纠正错误了。
7
几种后悔药 本地commit修改撤销 场景: 你只是在最后的提交信息中敲错了字,比如你敲了git commit -m “Fxies bug #42″,而在执行git push之前你已经意识到你应该敲”Fixes bug #42″。 撤销命令: git commit –amend或者git commit –amend -m “Fixes bug #42″ 原理: git commit –amend将使用一个包含了刚刚错误提交所有变更的新提交, 来更新并替换这个错误提交。由于没有staged的提交,所以实际上这个提交只是 重写了先前的提交信息。
8
几种后悔药 工作目录修改撤销 场景:你正在编辑的文件被保存了但是你的编辑器恰在此时崩溃了。此时你并没有 提交过代码即并没有做add操作。你期望撤销这个文件中的所有修改——将这个文 件回退到上次提交的状态。 撤销命令: git checkout — 原理: git checkout将工作目录(working directory)里的文件修改成先前Git已 知的状态。你可以提供一个期待回退分支的名字或者一个确切的SHA码,Git也会 默认检出HEAD——即:当前分支的上一次提交。 注意: 用这种方法“撤销”的修改都将真正的消失。它们永远不会被提交。因此 Git不能恢复它们。此时,一定要明确自己在做什么!(或许可以用git diff来确定)
9
几种后悔药 重置本地修改 场景: 你已经在本地做了一些提交(还没push),但几次提交都不正确,你想撤 销最近的三次提交,就像它们从没发生过一样。 撤销命令: git reset –hard SHA 原理: git reset将你的仓库纪录一直回退到指定的最后一个SHA代表的提交,那些 提交就像从未发生过一样。默认情况下,git reset会保留工作目录(working directory)。这些提交虽然消失了,但是内容还在磁盘上。这是最安全的做法, 但通常情况是:你想使用一个命令来“撤销”所有提交和本地修改——那么请使用 –hard参数。
10
Git对分支的操作 git创建分支其实就是创建了一个新的指针
git branch myfeature ---创建myfeature 分支并没有切换到此分支上需要下面命令切换 git checkout myfeature 切换到myfeature 分支 git checkout -b myfeature develop 从 develop 分支建一个 feature 分支,并切换到 feature 分支 git branch 查看本地分支 git branch –a 查看远程分支 git remote show origin 查看本地分支对应远程哪个分支,以便push git branch –d myfeature 删除本地myfeature 分支 git merge myfeature ---合并myfeature分支到develop分支上,需要明确此时你的工作分支是develop
11
Git一次完整提交 git add 1.txt --提交修改到暂存区 git commit –m “msg” --提交修改到本地HEAD
git push origin dev:maser 推送修改到远程中心仓库 git push origin dev:refs/for/master gerrit命令推送修改到gerrit评审分支, 然后评审者submit到中心仓库
12
Gerrit 代码审核服务器的工作流程
13
账号注册 我们的gerrit服务使用http认证方式,所以需要向管理员申请 账户,邮件发送后管理员创建好账户。
在自己本地生成公钥对,命令:ssh-keygen -t rsa。一路回 车yes,查看~/.ssh目录下会有两个文件生成,id_rsa和 id_rsa.pub,后面文件是公钥,需要上传到gerrit服务器, 复制文件内全部内容到settings->ssh-keys->AddKey->保存 在本地设置git全局环境,如下两个命令 git config --global user.name "your name“ git config --global user. "your "
14
注册账户 设置邮箱地址 设置后邮箱会收到一份邮件复制邮件地址激活邮箱 激活后如图一名字地下就会有邮箱 设置完成后在本地执行如下
ssh -p
15
设置repo 1.获取repo仓库,git clone http://gerrit.ontim.cn:8081/ontim-repo
mkdir ~/bin PATH=~/bin:$PATH git clone cp ontim-repo/repo ~/bin chmod a+x ~/bin/repo
16
获取代码下载地址 向管理员或者spm获取代码下载地址 例如8953的下载地址:
repo init -u admin需要换成gerrit登录名 然后执行repo sync
17
Repo命令 repo start(创建并切换分支)
repo start <newbranchname> [--all | <project>…] 刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b 命令的封装。为指定的项目 或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与git checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上创建特性分支, 而repo start是在清单文件设定分支的基础上创建特性分支。 repo start dev --all 假设清单文件中设定的分支是master,那么执行以上指令就是对所有项目,在master的基础上创 建特性分支dev. repo start dev platform/build 假设清单文件中设定的分支是master,那么执行以上指令就是对platform/build项目,在master的 基础上创建开发分支dev
18
Repo命令 repo checkout(切换分支)
repo checkout <branchname> [<project>…] 实际上是对git checkout 命令的封装,但不能带-b参数,所以不能用此命令来创 建分支。 Example: repo checkout dev repo checkout dev platform/build
19
Repo命令 repo branches(查看分支) repo branches [<project>…]
repo branches platform/build 查看某一个仓库仓库分支 repo diff(查看工作区文件差异) ,用于分别显示各个项目工作区下的文件差异 repo diff [<project>…] repo diff 查看所有项目 repo diff platform/build ---只查看其中一个项目
20
Repo命令 repo status(查看文件状态),对git diff-index、git diff-filse命令的封装,同时显示 暂存区的状态和本地文件修改的状态 repo status platform/bionic 以上的实例输出显示了platform/bionic项目分支的修改状态 repo upload repo upload相当于git push,但是又有很大的不同。它不是将版本库改动推送到 克隆时的远程服务器,而是推送到代码审核服务器(Gerrit软件架设)的特殊引用上, 使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为 一个待审核的修改集,并进入代码审查流程,只有当审核通过后,才会合并到官方 正式的版本库中。
Similar presentations