楔子
新接手一个项目,要用到repo和gerrit,总结下repo使用过程。
repo/gerrit概述
- repo是可执行的python脚本,能更好的管理和使用git
- gerrit是一种基于web的代码评审工具,使用git。通过浏览器显示每一步变化,是审查更加容易
repo命令
-
repo init -u URL -b 分支名
在当前目录创建一个特定的repo目录,从url中取得manifest文件,-b 分支名
用来指定某个manifest分支 -
repo sync -c
- 第一次运行,相当于
git clone
,把repository中所有内容拷贝到本地 - 不是第一次运行,相当于更新和自动合并工作
-
-c
表示仅仅获取当前分支的内容
- 第一次运行,相当于
-
repo start <newBranchName> --all
创建特性分支。由于刚克隆下的代码没有分支,因此需要本地创建特性分支
cherry pick
git cherry-pick commit_id
:把另一个本地分支的commit的修改应用到当前分支
例如:在分支A上修改了文件A,git commit
后,重新创建一个分支B,想在文件A的基础上继续更改,但又不想提交这些额外的更改,就可以提交分支A上的A文件,然后切换到分支B上,git cherry pick A_commit_id
,然后继续操作即可
repo start
repo start branchName
:开始一个新的分支
repo upload .
repo upload .
上传代码
遇到的问题
-
repo sync -c
克隆到本地的代码没有分支,更改代码后,无法提交代码。此时需要repo start branchName
创建分支,此时会发现之前commit
的代码没有了。
解决步骤:-
git reflog
:该命令可以查看所有分支的所有操作记录,包括已经被删除的commit
记录,git log
不能查看已经被删除的commit
记录 -
git cherry-pick commit_id
:可以将commit_id对应的更改合并到当前分支上
-
网友评论