【开发工具日记】Git篇 ③ Repo仓库管理指南

文摘   科技   2024-10-28 20:02   山东  

关注+星标公众,不错过精彩内容


作者 | 量子君

微信公众号 | 极客工作室

【开发工具日记】专栏介绍

在这个专栏中,你可以了解到各种开发工具的特点和用途,如代码编辑器、调试工具、性能优化工具、版本控制工具等。专栏中还包含了一些实用的技巧和经验分享,例如如何使用特定工具解决常见问题、如何提高代码质量和可维护性等。另外,还提供了一些有用的资源下载,如开源项目、UI库、插件等。

本章目录

  • 前言
  • 一、前期准备

    • 1.1 下载repo 工具

    • 1.2 git bash 默认使用管理员模式打开

  • 二、使用Repo 拉取工程代码

  • 三、常用指令

  • 四、Q&A

  • 五、参考链接

  • 总结

 前言

Gitee 并不支持从远端仓库一键cherry-pick到本地仓库的功能,但在实际开发这种操作常会用到。

一、前期准备

1.1 下载repo 工具

  1. 在任意目录下点击右键,打开git bash。

  2. 依次输入以下指令在用户主目录下,新建文件夹。

    mkdir ~/bin


  3. 下载repo工具。

    curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo


  4. 赋予可执行权限。

    chmod a+x ~/bin/repo


  5. 安装request依赖。

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests


1.2 git bash 默认使用管理员模式打开

  1. 进入Git的安装路径,找到 git-bash.exe ,点击右键-属性。

  2. 使其始终以“管理员模式”打开。

  3. 将系统默认编码格式,改为UTF-8(可选)。


  4. 国内版的Windows,大多以GBK为默认打开/读取文件格式。造成在repo 拉取代码时,会报字符无法识别的错误,如下措施可解决。


二、使用Repo 拉取工程代码

建立Repo管理的工作区,主要分三大步:

  • 初始化repo仓库

  • 选择对应的仓库清单

  • 更新代码


通过repo拉取代码之后,仓库自身的操作跟以前工作方式一致(git bash和小乌龟仍可用)。刚接触Repo的同学,建议还是每个项目建一个工作区,避免因指令生疏造成工作区代码混乱,熟悉之后便可在项目之间切换自如。具体步骤如下:
  1. 找到合适的路径,并新建一个文件夹。

  2. 在文件夹内点,右键,选择git bash。

  3. 输入指令,以初始化repo工程。

    repo init -u git@gitee.com:qingdaomagene/repo_config.git


  4. 此时工作区中内会生成一个 .repo 文件夹,进入 .repo\manifests 路径,会有一个代表仓库清单的文件,名为default.xml。

  5. 如果需要增加仓库清单,可以复制 default.xml 文件,并自定义.xml的文件名。

  6. 修改自定义xml里 user 的远端地址前缀。


    自己Gitee的仓库域名,可以从任意fork仓库的链接中找到。


  7. 加载清单文件。

    .xml文件名可以自定义。

    repo init -m xxxx.xml


  8. 拉取代码。

    可添加后缀 -j8 或 -j16 加快下载进度,具体并发的任务数量根据电脑配置来定,例:repo sync -j16。
    这步时间比较长,请耐心等待 3-5min。
    想拉取最新代码,执行repo sync之前,别忘了将fork的仓库更新一下。
    repo sync

  9. 一键将所有仓库,切到指定分支。

    只需将master字样,替换为目标分支名。

    repo forall -c git checkout -b master user/master


三、常用指令

  1. 初始化repo仓库,并拉取清单列表 (每个工作区只需执行一次)。

    repo init -u xxxxx


  2. 加载清单文件 (仅初始化工作区,或同一工作区切换项目时执行)。

    repo init -m xxx.xml


  3. 更新代码。

    repo sync


  4. 查看当前已加载的清单详情。

    repo manifest -r


  5. 批量执行git指令。

    repo forall -c <git指令>

    例:repo forall -c git reset --hard (清空所有仓库的工作区和暂存区的改动)


  6. 查看本地分支及关联的远端分支。

    git branch -vv


  7. 查看远端仓库。

    git remote -v


  8. 查看当前HEAD节点的commit id。

    git log --oneline -1


四、Q&A

  1. Q:使用repo管理仓库之后,还需要每个仓库都Fork吗?

    A:需要!Fork仓库是我们在gitee平台上使用的代码托管模式,repo是本地git仓库管理工具。使用repo之后,并不会改变团队之前的开发模式。


  2. Q:使用repo拉取代码之后,在VS Code中有些文件搜索不到了。

    A:工程配置仓库不需要跟踪其他仓库的文件改动,所以把某些路径设为git忽略的目录,导致vscode不从这些目录中搜索文件。解决办法:VS Code 某些文件夹为灰色全局搜索搜不到该文件夹的内容


  3. Q:只有部分仓库有某一个特定分支,一个一个仓库切分支太麻烦了,有没有快捷办法?

    A:有!先用 repo forall -c git checkout -b master remotes/user/master 将所有仓库切到master分支,再用repo forall -c 全切到dev/oversea 分支。


  4. Q:VS Code的源代码管理器,没把所有的仓库都显示出来。

    A:在未显示出来的仓库里,随便打开一个该仓库的文件, 然后再去源代码管理器中查看,就能显示出来了。


参考链接

https://gerrit.googlesource.com/git-repo/+/main/docs/manifest-format.md






若觉得文章对你有帮助,随手点『好看』、转发分享,也是对我的支持
关注我的微信公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
点击“阅读原文”查看更多分享

极客工作室
一个专注于嵌入式系统、智能硬件、AIoT的极客自媒体
 最新文章