repo 相关

一.相关报错

1.error: .repo/manifests/: contains uncommitted changes 解决办法

出现这个问题的原因是本地代码发生变化,但未commit

试着通过 git reset --hard来恢复所有变化的文件之后,依然存在上述问题,

最后通过cd .repo/manifests 切换到 .repo/manifests目录下执行git stash命令,并
通过git clean -f -d命令删除变化记录目录,然后使用repo sync就可以通过了。

2.repo init报错

  File "/home/.repo/repo/main.py", line 79
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

解决:repo版本有问题,删掉已有的,重新下载。

ubuntu下载方式

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

3.fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle

Downloading Repo source from https://gerrit.googlesource.com/git-repo
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [Errno 110] Connection timed out
fatal: cloning the git-repo repository failed, will remove '.repo/repo

解决:

1.获取repo

# cd ~
# mkdir bin
# cd bin
# curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
# chmod a+x ~/bin/repo
# export PATH=${PATH}:~/bin

2.修改repo文件

打开~/bin/repo文件并修改google地址
# vi ~/bin/repo

From
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
To
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

4.server certificate verification failed. CAfile: none CRLfile: none

解决:

git config --global http.sslverify false

二.命令介绍

1.repo sync [PROJECT1…PROJECTN]

下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。

如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ; git   rebase origin/branch . repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行 git rebase --continue

2、repo forall [PROJECT_LIST]-c COMMAND

对指定的Project列表或所有Project执行命令COMMAND,加上-p参数可打印出Project的路径。

3、repo forall -c ‘git reset --hard HEAD;git clean -df;git rebase --abort’

repo forall –c ‘git remote add korg ssh://xiong@172.16.31/$REPO_PROJECT.git’

这个命令可以撤销整个工程的本地修改。

4.repo版本回退

所有仓库回退

$ repo forall -c 'commitID=`git log --before "2021-03-21 07:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'

参数说明:
forall  操作分支中的所有仓库
-c  只操作当前分支
–before  早于指定时间点的提交记录
-1  只显示最近的1条记录(注意这是数字 1 ,如果要显示 2 条就写 2,以此类推)
“2017-03-17 07:00”  希望回退到的日期(时间点)
–pretty  以指定格式显示提交记录%H  提交记录的hash值,即commit id(其它格式及更详细的信息可以使用命令git log --help打印帮助信息并查看“PRETTY FORMATS”小节)命令含义: 这条repo命令的实质就是在当前分支的每个仓库下执行[Git] log命令,找出该仓库下符合时间条件的第一个提交记录,然后对该仓库执行[git]+ reset --hard操作。就这么简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值