一、一般步骤
有任务过来,在你的软件部系统上点击项目,就可以知道你有哪些项目,而且会列出取代码的repo init命令
比如
repo init -u ssh://192.168.30.13:29418/manifest.git -b wingtech -m ap_MT6762_p0.mp1_lg_s96769aa1_jdm2.xml
这个repo命令中要注意-m后面加的是“分支名.xml”,这个分支名后面有用
然后就在ubuntu上建立一个文件夹,然后进入这个文件夹,执行这条repo init命令
repo init -u ssh://192.168.30.13:29418/manifest.git -b wingtech -m ap_MT6762_p0.mp1_lg_s96769aa1_jdm2.xml
然后执行命令“repo sync -c”
这两步repo init和repo sync –c就是在检出代码
然后执行命令“repo start xxx --all” xxx是分支名,注意是杠杠all,有两个杠
这一步是在建立本地分支
然后执行命令“repo checkout xxx” xxx是分支名,
这一步是在切换分支
如果是在查看别人的提交记录,那只能看到项目名
那就
repo init -u ssh://192.168.30.13:29418/manifest.git -b wingtech -m 项目名.xml
就OK了
二、后续补充
以上就是拉取代码,后面关于repo,git的相关操作都更新在下面
1、上传代码
简单说一下
项目有多个git库
比如我修改了内核的代码,那就进入内核目录
cd alps/kernel-4.9
git status //查看修改了、新增了、删除了那些文件
git add .
git commit //先执行一次生成模板
git commit //再执行一次,就会弹出模板,按照模板填写
repo upload .
做完这一步在gerrit就可以看到my里面就有自己的提交记录了
2、代码回退或者切换到某一版本
比如原来样机可以进入laf模式,但是有几个人经过几次代码提交后就进不去了。那肯定就是这几次提交记录的某一次引入了这个问题。
那我们就可以这么解决,回退到能进入laf模式的那个版本,然后按照代码提交记录的时间先后一次一次的切换版本,看看到底是那一次代码修改引入了这个问题
这个操作是这样
点开某一次代码提交记录
如果光是git reset就不会放弃本地修改,另外可以不从gerrit上看提交号,用git log看
3、repo sync报 “branch ... is published (but not merged)”
repo sync -c来拉取代码的时候可能就会有这样的问题
遇到这样的文件首先先到报错的git库目录下执行一下git clean -df,把和git库无关的文件清除一下
然后在使用git pull来拉取代码
然后再输入repo sync -c就不报错了
这个可能是repo拉取代码的bug。反正就这样处理就好了。
4、代码修改后,为了防止repo sync -c后修改都没有了
工作的时候经常会遇到这样的问题,
(1)我修改了代码,还没有验证,但我想repo sync -c。
以前我只能git checkout .还原,然后在repo sync -c
但这样代码又得修改一遍
现在有办法了
git stash -u //把修改存在暂存区里
git status //可以看到修改都没有了,存在暂存区里面的
repo sync -c
git stash pop //把暂存区里面的东西弄出来,这个时候可能会报冲突,解决冲突
如果冲突就会报
类似这样的
像这个就是core/main.mk这个文件冲突了
解决冲突的方式就是
vi core/main.mk,你搜一串<<<<,就能搜到
这么一段以<<<<开始,中间有=====,最后有>>>>结尾的这么一段
解决冲突的方法就是把<<<这行,====这行,>>>>这行,这三行标志行先删掉
然后在上图这个例子中,从<<<<到====这行就是别人加的,从===到>>>>这行就是你加的,
所以你看看你加的还要不要保留,不需要保留就删掉
然后保存退出
这个时候这个冲突的文件状态还不对
git add .
git reset HEAD
用上面这两条命令改变冲突的文件状态
当然如果冲突的这个文件你修改不多的话,你可以把<<<,===,>>>这三个标志行删掉,然后再
git add .
git reset HEAD
来改变冲突的文件状态,然后
git checkout 冲突的文件名
然后你再去修改冲突的文件
(2)我修改了代码,但只是为了测试临时修改一下,这个修改不用合入,
但我为了以后可以查看这个代码修改记录,所以我git commit,repo upload .提交上去了,但不审核也不submit
这个时候git status你会看到修改都没有了,git log可以看到在刚刚repo upload的哪里
这个时候这样
先git reset 后面跟你提交前的那个版本的号
然后git status就可以看到修改的东西又回来了,后面就按照(1)来操作就ok了
5、如何根据生成某笔提交的patch
如果是最新一笔提交,使用命令“git format-patch -1”
执行命令后,就会在目录中生成一个类似于“0001-Issue-Description-bug-550150-disable-usb-ssphy.patch”的文件
如果不是最新一笔提交,使用命令"git format-patch -1 提交号"