学习笔记|repo
repo 是 python 脚本,为便于管理一个项目中的多个 git 仓库。
重要:无特殊情况,使用 python3 版本 repo。
1.清单库
manifest.git 是清单库 。一个清单库包含多个清单文件,代表着不同的 git 版本库和分支。
2.清单文件
清单文件在目录 .repo/manifest/
中。清单文件为 xml 格式,元素如下表:
元素 | 含义 |
---|---|
remote | 远程 git 库。 |
project | 项目在 git 库中的相对路径。 |
default | 设置默认 git 库和分支。 |
3.拉取清单文件
1 |
|
- -u:指定一个URL,其连接到一个 manifest 仓库
- -b:选择 manifest 仓库中的一个分支。
- -m:在 manifest 仓库中选择一个 xml 文件。
4.同步代码
参照清单文件 .repo/manifest.xml 克隆并同步版本库。如果项目版本库不存在,则执行 repo sync
命令相当于执行 git clone
1 |
|
5.创建分支
为单个项目或所有项目,以清单文件中已设定的分支为基础,在本地创建新的分支。
1 |
|
从这条之下的所有命令,都是在单个项目中运行。
6.查看分支
查看单个项目下各模块的分支信息
1 |
|
7.切换分支
1 |
|
8.查看文件差异
1 |
|
9.查看文件状态
1 |
|
每个小节的第一行显示的是项目名称和所在的分支名称。
- -:没有改变
- A:添加(不在HEAD中,在暂存区中)
- M:修改(在HEAD中,在暂存区中,内容不同)
- D:删除(在HEAD中,不在暂存区)
- R:重命名(不在HEAD中,在暂存区,路径修改)
- C:拷贝(不在HEAD中,在暂存区,从其他文件拷贝)
- T:文件状态改变(在HEAD中,在暂存区,内容相同)
- U:未合并,需要冲突解决
每个小节的第二行第一个字母表示暂存区文件修改的状态,第二个字母表示工作去文件的更改状态。
- -:新/未知(不在暂存区,在工作区)
- m:修改(在暂存区,在工作区,被修改)
- d:删除(在暂存区,不在工作区
10.删除指定分支
该命令实质是对 git branch -d
的封装。
1 |
|
11.删除已经合并分支
该命令实质是对 git branch -d
的封装,用于扫描项目的各个分支,并删除已经合并的分支。
1 |
|
12.将文件添加到 index 表中
该命令实质是对 git add –interactive
命令的封装,用于将项目工作区中的改动添加到暂存区。
1 |
|
- -i 表示 –interactive,给出个界面让用户选择。
13.设置远程仓库
根据 xml 文件添加的远程分支,方便于向服务器提交代码。
1 |
|
14.遍历当前项目下的所有 git 仓库
该命令相当于一个迭代器,会遍历当前项目下所有的 git 仓库,在所有指定的项目中执行同一个 shell 命令。
1 |
|
-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 |
|
15.合并分支
先将所有项目都切换到 master 分支,再将 local 分支合并到 master 分支上。
1 |
|
16.设置 tag
1 |
|
17.显示 repo 版本号
1 |
|
18.帮助文档
1 |
|