一.相关报错
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操作。就这么简单。