关注+星标公众号,不错过精彩内容
作者 | 量子君
微信公众号 | 极客工作室
【开发工具日记】专栏介绍
本章目录
前言 一、前期准备
1.1 下载repo 工具
1.2 git bash 默认使用管理员模式打开
二、使用Repo 拉取工程代码
三、常用指令
四、Q&A
五、参考链接
总结
前言
一、前期准备
1.1 下载repo 工具
在任意目录下点击右键,打开git bash。
依次输入以下指令在用户主目录下,新建文件夹。
mkdir ~/bin
下载repo工具。
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin
/repo
赋予可执行权限。
chmod a+x ~/bin/repo
安装request依赖。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
1.2 git bash 默认使用管理员模式打开
进入Git的安装路径,找到 git-bash.exe ,点击右键-属性。
使其始终以“管理员模式”打开。
将系统默认编码格式,改为UTF-8(可选)。
国内版的Windows,大多以GBK为默认打开/读取文件格式。造成在repo 拉取代码时,会报字符无法识别的错误,如下措施可解决。
二、使用Repo 拉取工程代码
建立Repo管理的工作区,主要分三大步:
初始化repo仓库
选择对应的仓库清单
更新代码
找到合适的路径,并新建一个文件夹。
在文件夹内点,右键,选择git bash。
输入指令,以初始化repo工程。
repo init -u git@gitee.com:qingdaomagene/repo_config.git
此时工作区中内会生成一个 .repo 文件夹,进入 .repo\manifests 路径,会有一个代表仓库清单的文件,名为default.xml。
如果需要增加仓库清单,可以复制 default.xml 文件,并自定义.xml的文件名。
修改自定义xml里 user 的远端地址前缀。
自己Gitee的仓库域名,可以从任意fork仓库的链接中找到。
加载清单文件。
.xml文件名可以自定义。
repo init -m xxxx.xml
拉取代码。
可添加后缀 -j8 或 -j16 加快下载进度,具体并发的任务数量根据电脑配置来定,例:repo sync -j16。 这步时间比较长,请耐心等待 3-5min。 想拉取最新代码,执行repo sync之前,别忘了将fork的仓库更新一下。 repo sync
一键将所有仓库,切到指定分支。
只需将master字样,替换为目标分支名。
repo forall -c git checkout -b master user/master
三、常用指令
初始化repo仓库,并拉取清单列表 (每个工作区只需执行一次)。
repo init -u xxxxx
加载清单文件 (仅初始化工作区,或同一工作区切换项目时执行)。
repo init -m xxx.xml
更新代码。
repo sync
查看当前已加载的清单详情。
repo manifest -r
批量执行git指令。
repo forall -c <git指令>
例:repo forall -c git reset --hard (清空所有仓库的工作区和暂存区的改动)
查看本地分支及关联的远端分支。
git branch -vv
查看远端仓库。
git remote -v
查看当前HEAD节点的commit id。
git log --oneline -1
四、Q&A
Q:使用repo管理仓库之后,还需要每个仓库都Fork吗?
A:需要!Fork仓库是我们在gitee平台上使用的代码托管模式,repo是本地git仓库管理工具。使用repo之后,并不会改变团队之前的开发模式。
Q:使用repo拉取代码之后,在VS Code中有些文件搜索不到了。
A:工程配置仓库不需要跟踪其他仓库的文件改动,所以把某些路径设为git忽略的目录,导致vscode不从这些目录中搜索文件。解决办法:VS Code 某些文件夹为灰色全局搜索搜不到该文件夹的内容
Q:只有部分仓库有某一个特定分支,一个一个仓库切分支太麻烦了,有没有快捷办法?
A:有!先用 repo forall -c git checkout -b master remotes/user/master 将所有仓库切到master分支,再用repo forall -c 全切到dev/oversea 分支。
Q:VS Code的源代码管理器,没把所有的仓库都显示出来。
A:在未显示出来的仓库里,随便打开一个该仓库的文件, 然后再去源代码管理器中查看,就能显示出来了。
参考链接