repo和git的常用命令

repo 简介

repo是Google开发的用于管理Android版本库的一个工具,repo是使用Python对git进行了一定的封装,并不是用于取代git,它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。因此,使用repo工具之前,请先确保已经安装git。

repo是一个用于管理多个Git仓库的工具,它可以帮助您在一个代码库中管理多个Git仓库的代码。

为什么要用repo?

项目模块化/组件化之后各模块也作为独立的 Git 仓库从主项目里剥离了出去,各模块各自管理自己的版本。Android源码引用了很多开源项目,每一个子项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统一管理各个子项目的Git仓库,需要一个上层工具批量进行处理,因此repo诞生。

repo也会建立一个Git仓库,用来记录当前Android版本下各个子项目的Git仓库分别处于哪一个分支,这个仓库通常叫做:manifest仓库(清单库)。

repo的使用

repo下载安装

下载地址:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo ,将下载下来的文件命名为repo,放在PATH环境变量所包含的目录下面,例如可以放在/usr/local/bin目录下(后面介绍均以放在/usr/local/bin目录下为例)。

或者,直接使用curl命令下载:

bash 复制代码
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

以上命令将在您的

~/bin目录中下载并安装repo脚本。

初始化代码库

在使用repo之前,您需要在本地计算机上初始化一个代码库,并将其与

repo关联。在您的本地计算机上,创建一个目录并初始化代码库:

bash 复制代码
$ mkdir myproject
$ cd myproject
$ repo init -u <URL>

其中

是您要使用的Git仓库的URL。这将在当前目录中创建一个

.repo目录,并将

repo工具的配置文件下载到该目录中。

同步代码

一旦您初始化了代码库,就可以使用以下命令将代码同步到本地:

bash 复制代码
$ repo sync

这将使用

repo工具自动下载和更新所有Git仓库中的代码。

管理Git仓库

使用repo start命令创建一个新的分支,然后使用

repo upload命令将更改提交到代码审查工具中。您还可以使用

repo forall命令在所有Git仓库中执行任意Git命令。

更新代码

您可以使用以下命令更新代码库中的所有Git仓库:

bash 复制代码
$ repo sync

这将下载和更新所有Git仓库中的代码。以上是

repo的基本使用介绍。使用repo可以更轻松地管理多个Git仓库,并使您能够更方便地进行代码共享和代码审查。

查看repo管理下的代码更新历史记录

如果您使用repo管理多个Git仓库,在repo中查看整个代码库的修改记录,可以使用以下命令:

plaintextCopy coderepo forall -c 'git log'

这将为每个Git仓库输出其Git日志。您也可以使用以下命令查看某个特定仓库的修改记录:

plaintextCopy coderepo forall <project_name> -c 'git log'

其中<project_name>是您要查看的特定仓库的名称。请注意,repo只是一个管理多个Git仓库的工具,它本身并不存储代码,因此不能直接查看整个代码库的修改记录。

git的常用命令

git log

git log执行后会返回一个冒号,表示等待用户输入搜索参数,以便更准确地查看提交记录。如果用户不输入任何参数,则会显示所有提交记录。

用户输入的参数有哪些?

用户可以输入的搜索参数包括:

  • 作者:--author
  • 日期:--since 或--after ,--until 或--before
  • 关键词:--grep
  • 提交信息:--oneline,--subject,--body
  • 限制结果数:-n

git reflog 查看每一次操作

git log --all --pretty=oneline --graph 查看所有提交记录

使用git log 命令可以查看每一笔修改涉及到哪些文件,具体方法如下:

  1. 查看某次提交:git log -p <commit_id>
  2. 查看某个文件的历史提交:git log -p <file_name>
  3. 查看某段时间内的提交:git log --since= --until=
    git log --since="2020-07-05" --until="2020-07-10"

这个命令会查询出在2020年7月5日到2020年7月10日之间的所有提交记录。

查看某次提交中涉及到的文件:git show <commit_id>

可以使用git show --name-only <commit_id> 命令来查看某一次提交修改的文件,不需要看到具体修改。

git log --since="2023-02-05" --until="2023-03-10"|grep "^commit"|awk '{print $2}'|xargs git show --name-only

废弃修改

如果你在repo仓库中修改了一些东西,但是不想上传并希望废弃这些修改,可以使用以下命令来撤销这些修改:

repo forall -c "git reset --hard"

该命令会遍历repo仓库下的所有git仓库,并将它们的工作区和暂存区恢复到HEAD的状态,即撤销所有修改。执行该命令前,请确保你已经保存了需要保留的修改,并做好了备份。

如果你只想撤销某个git仓库中的修改,可以进入该仓库的目录,然后执行以下命令:

撤销该仓库中的所有修改

git reset --hard

该命令将撤销该仓库中的所有修改,并将工作区和暂存区恢复到HEAD的状态。

需要注意的是,撤销修改会丢失已修改的内容,所以在执行该操作前,请确保你已经保存了需要保留的修改,并做好了备份。

相关推荐
克里斯蒂亚诺更新3 小时前
云效和IDEA关于git的相通使用
git
Gavynlee3 小时前
Git 操作问题排查与解决方案记录(Gitee 实战)
git·elasticsearch·gitee
邪修king3 小时前
Re:Linux系统篇(十):从零上手 Git + GitHub(Ubuntu 环境实操完整版|个人代码归档必备)
linux·git·github
李可以量化3 小时前
Redis 从了解到精通(三)下:性能基准测试与量化场景性能避坑指南
redis·git·python·量化交易·qmt·ptrade
青 春 记 忆12 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
牢姐与蒯14 小时前
Linux基础开发工具之版本控制器git
git
云原生指北16 小时前
Docker Sandboxes 工作区怎么接:Direct、Clone 和它们的边界
git·docker·agent
菠萝猫yena17 小时前
【git】git 命令常用组合
大数据·git·elasticsearch
Liekkas Kono20 小时前
aicommits 工具接入 Codex CLI 使用
git·swhl·aicommits
KieranYin21 小时前
Git | WorkTree(工作树)
git