学习笔记|repo

本文最后更新于:16 天前

repo 是 python 脚本,为便于管理一个项目中的多个 git 仓库 。

重要:无特殊情况,使用 python3 版本 repo。

1.清单库

manifest.git 是清单库 。一个清单库包含多个清单文件,代表着不同的 git 版本库和分支。

2.清单文件

清单文件在目录 .repo/manifest/ 中。清单文件为 xml 格式,元素如下表:

元素含义
remote远程 git 库。
project项目在 git 库中的相对路径。
default设置默认 git 库和分支。

3.拉取清单文件

1
repo init -u ssh://your_name@your_server.com/project_name/manifest.git -b dev -m feature-dev.xml
  • -u:指定一个URL,其连接到一个 manifest 仓库
  • -b:选择 manifest 仓库中的一个分支。
  • -m:在 manifest 仓库中选择一个 xml 文件。

4.同步代码

参照清单文件 .repo/manifest.xml 克隆并同步版本库。如果项目版本库不存在,则执行 repo sync 命令相当于执行 git clone

1
repo sync

5.创建分支

为单个项目或所有项目,以清单文件中已设定的分支为基础,在本地创建新的分支。

1
repo start branche_name

从这条之下的所有命令,都是在单个项目中运行。

6.查看分支

查看单个项目下各模块的分支信息

1
repo branches

7.切换分支

1
repo checkout branche_name

8.查看文件差异

1
repo diff

9.查看文件状态

1
repo status
  • 每个小节的第一行显示的是项目名称和所在的分支名称。

    • -:没有改变
    • A:添加(不在HEAD中,在暂存区中)
    • M:修改(在HEAD中,在暂存区中,内容不同)
    • D:删除(在HEAD中,不在暂存区)
    • R:重命名(不在HEAD中,在暂存区,路径修改)
    • C:拷贝(不在HEAD中,在暂存区,从其他文件拷贝)
    • T:文件状态改变(在HEAD中,在暂存区,内容相同)
    • U:未合并,需要冲突解决
  • 每个小节的第二行第一个字母表示暂存区文件修改的状态,第二个字母表示工作去文件的更改状态。

    • -:新/未知(不在暂存区,在工作区)
    • m:修改(在暂存区,在工作区,被修改)
    • d:删除(在暂存区,不在工作区

10.删除指定分支

该命令实质是对 git branch -d 的封装。

1
repo abandon branche_name

11.删除已经合并分支

该命令实质是对 git branch -d 的封装,用于扫描项目的各个分支,并删除已经合并的分支。

repo prune

12.将文件添加到 index 表中

该命令实质是对 git add –interactive 命令的封装,用于将项目工作区中的改动添加到暂存区。

1
repo stage -i
  • -i 表示 –interactive,给出个界面让用户选择。

13.设置远程仓库

根据 xml 文件添加的远程分支,方便于向服务器提交代码。

1
2
3
4
repo remote addd remote_name url

# 例如:
# repo remote add org ssh://your_server.com/git_repo

14.遍历当前项目下的所有 git 仓库

该命令相当于一个迭代器,会遍历当前项目下所有的 git 仓库,在所有指定的项目中执行同一个 shell 命令。

1
repo forall -c 命令
  • -c:后面可以带的任何可以被系统支持的shell命令(ls,cp,pwd等)。

  • -p:在shell命令输出之前列出项目名称。

  • -v:列出执行shell指令输出的错误信息。

  • 该命令还可以添加环境变量:(环境变量的参数有如下几种)

    • REPO_PROJECT:指定项目的名称。
    • REPO_PATH:指定项目在工作区的相对路径。
    • REPO_REMOTE:指定项目远程仓库的名称。
    • REPO_LREV:指定项目最后一次提交服务器仓库对应的哈希值。
    • REPO_RREV:指定项目在克隆时的指定分支,manifest 里的 revision 属性。
  • 如果 -c 后面的 shell 指令是上述的环境变量,则需要用单引号把 shell 指令括起来。

1
repo forall –c ‘echo $REPO_PROJECT

15.合并分支

先将所有项目都切换到 master 分支,再将 local 分支合并到 master 分支上。

1
repo forall -p -c git merge local

16.设置 tag

1
repo forall -c git tag 标签名   # 在所有项目下打标签

17.显示 repo 版本号

1
repo version  # 查看版本号

18.帮助文档

1
repo help # 找到总结所有命令的文档

本博客所有文章均个人原创,除特别声明外均采用 CC BY-SA 4.0协议,转载请注明出处!