git仓库想要加进repo,使用manifest

把独立Git仓库加入Repo管理

Repo是谷歌开发的多git仓库管理工具,本质:repo管理多个git子仓库,每个子仓库对应一个manifest清单xml文件

前提:已经初始化好repo工作目录(.repo/目录存在)

两种场景

  1. 新增一个全新git仓库,纳入repo管理(最常用)
  2. 本地已有git工程,把它交给repo接管

场景1:新增远端Git仓库到Repo(标准流程)

1. 修改manifest清单

找到你的manifest仓库(一般在.repo/manifests/,是一个git仓库)
编辑 default.xml(或者你的自定义manifest文件)

<!-- 示例:新增一个仓库 -->
<project name="xxx/your_project"
         path="your_project"
         remote="origin"
         revision="main"/>

字段解释:

  • name远端仓库在remote上的仓库名(gerrit/gitee/gitlab上仓库名字)
  • path本地工作目录下存放路径,repo sync后就生成这个文件夹
  • remote:引用manifest里定义的remote名称,对应git服务器地址
  • revision:分支/tag/commit,一般写分支名如main/master

如果没有现成remote,在xml上方添加remote节点:

<remote name="origin" fetch="shturl.cc/lpmEb5wNo1"/>

2. 提交manifest修改

cd .repo/manifests
git add default.xml
git commit -m "add your_project repo"
# 推送到manifest远端仓库
git push

3. 同步代码,拉取新增仓库

repo sync your_project

执行完成,本地就出现your_project/目录,这个工程正式被repo管理。

后续repo syncrepo forall都会包含这个新仓库。


场景2:本地已经有一个git仓库,想交给repo接管

⚠️不要手动复制文件夹,repo会管理.git,手动操作容易冲突。

  1. 先把本地仓库代码推送到远端git服务器(必须要有远端仓库,repo不管理裸本地git)
  2. 删除本地这个文件夹(repo sync会重新下载)
  3. 按场景1,在manifest添加<project>节点
  4. repo sync your_project
    repo会重新clone下来,历史commit完整保留,之后全部走repo操作。

❌错误做法:直接把已有git文件夹拷贝到工作目录,repo不会识别,repo sync还会覆盖删掉你的本地仓库。


常用配套命令

# 只同步新增的单个project
repo sync your_project

# 查看repo识别的所有项目,确认新增成功
repo list

# 在所有项目执行命令,验证新仓库生效
repo forall your_project -c "git status"

常见踩坑点

  1. revision写错,拉到旧代码:revision写分支名,不要写commit hash(除非固定版本)
  2. name/path搞混name是服务器仓库名;path是本地路径,两者可以不一样
  3. manifest修改后没有push远端:别的同事repo sync看不到新增仓库
  4. remote的fetch地址不对,报clone失败

拓展:不修改主manifest,本地临时添加(仅本机生效,不共享给其他人)

只自己本地测试,不想提交manifest仓库:
修改 .repo/manifests/default.xml,本地改完不要git commit,直接repo sync

注意:执行repo init重新初始化会丢失本地未提交的manifest修改,团队协作必须提交manifest到远端。

如果你需要,我可以给你一份完整可复制的default.xml最简样例,或者讲下如果是vendor下新增仓库的写法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值