repo学习
repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理给git管理的一个个仓库的)
1.安装步骤
1、根目录下创建bin文件夹
mkdir ~/bin
2、配置为临时环境变量(也可配置为永久的)
PATH=~/bin:$PATH
3、下载repo
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
或者可以使用清华源下载
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
4、将git-repo中的repo文件复制到 1 创建的bin目录中
cd git-repo
cp repo ~/bin/
5、修改权限
chmod a+x ~/bin/repo
6、创建同步源码的工作目录
mkdir android_source
7、在工作目录中创建.repo目录
cd android_source
mkdir .repo
8、将下载的git-repo拷贝到.repo下,并改名为 repo
9、可以重新初始化了
repo init -u xxxxxxxxx -b xxxx
10、开始同步
repo sync
2.获取帮助
repo help [ command ] //显示command的详细的帮助信息内容
示例:
repo help init
来获取repo init的其他用法
3.repo init -u URL
用以在当前目录安装repository,会在当前目录创建一个目录".repo" -u 参数指定一个URL,
从这个URL中取得repository的manifest文件。
示例:repo init -u git://android.git.kernel.org/platform/manifest.git
获取的manifest文件放在.repo目录中。命名为manifest.xml。这个文件的内容其实就是所有被git管理的仓库的列表!
可以用-m 参数来选择获取repository中的某一个特定的manifest文件,如果不具体指定,那么表示为默认的manifest文件(default.xml)
repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml
(有诸多供我们选择的manifest文件,所有的manifest文件都放在目录.repo/manifests中,该目录本身亦被git所管理,你可以cd进去看看)
可以用-b 参数来指定某个manifest分支。
repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0
你会发现.repo/manifests是个被git管理的仓库,这里放的是所有的manifest文件(*.xml),因为被git管理,固然有分支,-b可以切换到你想要的分支然后再
下载相关的xml文件,当然具体下载那个xml还要看-m参数了,所以如果你仅仅指定-b而没有-m的话,就是下载-b指定分支下的default.xml文件如果不指定-b参数,那么会默认使用master分支
4.repo sync [project-list]
下载最新本地工作文件,更新成功,这本地文件和repository中的代码是一样的。
可以指定需要更新的project,如果不指定任何参数,会同步整个所有的项目。
如果是第一次运行repo sync,则这个命令相当于git clone,会把repository中的所有内容都拷贝到本地。如果不是第一次运行repo sync,
则相当于git remote update; git rebase origin/branch .
repo sync会更新.repo下面的文件。如果在merge 的过程中出现冲突,这需要手动运行
git rebase --continue
5.repo update[ project-list ]
上传修改的代码,如果你本地的代码有所修改,那么在运行repo sync的时候,会提示你上传修改的代码,
所有修改的代码分支会上传到Gerrit (基于web的代码review 系统), Gerrit受到上传的代码,会转换为一个个变更,
从而可以让人们来review 修改的代码。
6. repo diff [ project-list ]
--显示提交的代码和当前工作目录代码之间的差异。
7. repo download target revision
--下载特定的修改版本到本地,
例如: repo download pltform/frameworks/base 1241 下载修改版本为1241的代码
8. repo start newbranchname .
--创建新的branch分支。"." 代表当前工作的branch分支。
9. repo prune [project list]
--删除已经merge的project
10. repo foreach [ project-lists] -c command
--对每一个project运行command命令
11. repo status
--显示project中每个仓库的状态
12. repo forall -c
-- 遍历所有的git仓库,并在每个仓库执行-c所指定的命令
示例:
repo init -u ssh://217.106.79.36:29418/feng/main.git repo sync repo forall -c "git reset --hard feng-201708212"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)