1, 分别使用GIT REPO下载10.92.32.10:mtk6572/packages/apps/Mms.git的命令是?
repo init -u git@10.92.32.10:mtk6572/packages/apps/Mms.git&& repo sync
gitclone git@0.92.32.10:mtk6572/packages/apps/Mms.git
2, 如何下载yarism-study代码?
repo init -u git@10.92.32.10:alps/manifest-m yarism-study.xml && repo sync
3, 如何设置自己的git和gerrit的账号?如何查看自己的git的账号的设置?
Git配置: 配置用户名:git config --globaluser.name “limin.zhuo.hz” (申请的gerrit用户名)
配置用户邮箱:git config --global user.email “limin.zhuo.hz@tcl.com
Grrrit: gerrit账号的申请是和git账号一起申请的,在开通git的同时会开通此站点的权限。
查看账号设置:git config --list
4, 如何提交修改一批文件中的某几个文件?
gitcommit –m “注释”
5, 如何退回某次未提交的修改?
gitcheckout file-name; // 撤销未提交的修改
6, 请给出直接git push和通过gerrit push的命令实例?并简述两种方式的区别。
通过git push命令将变更先push到Gerrit服务器上,Gerrit上的push
需要SSHkey才可以进行push。代码进行审查后才会提交到中心服务器。
git push是直接向指定服务器的版本库提交代码。
7, 请给出git fetch 和 git pull命令的区别并给出命令实例
Git fetch是从远程服务器上下载本地目录中没有代码,对于服务器中别人
已经修改的代码会保留下来,需要手动合并。而git pull在拉取代码的同时,
会自动合并分支内的修改。
8, 如何使用对比本地修改和git库中的差别?
git log –stat;
9, 如何查看修改哪些文件?
git diff –cached:比较”已暂存”和本地文件
10, 如何针对一个库查看某个人的所有修改过的记录?
git log –author=’name’
11, 请给出以下四命令的区别
git reset --soft
git reset --hard
git reset --mixed
git reset
git reset 这种情况下会使用默认模式。同git reset –mixed
git reset –mixed 默认模式。仅重置index中的内容,working
directory中的内容不会改变。HEAD指向—mixed后所指示的提交节点,原所做
的修改需要执行git add暂存。
git reset –soft 保留index和working directory中的内容不改变,
仅仅只是把HEAD所指示的提交节点。后面的提交记录也会消失。
12, 给出以下命令:
(1) 查看一个git库最近三次的提交日志
git log 3
(2)查看最新一次提交的内容(修改了哪些文件哪些内容)
git log -1 -p
13, 给出以下命令:
(1) 比较本地工作目录和本地服务器差别的命令
Git diff head
(2)比较本地服务器中本次提交和上次提交之间差别的命令
Gitdiff HEAD HEAD
14, 如何在Gitweb和Gerrit上查看某个库最近的提交记录?
打开GitWeb地址,登陆gerrit后,选择要查看的库,就可以查看最近的提交记录了。
15, HEADHEAD^ HEAD~4在git中分别表示?
在git中HEAD表示当前分支上最新的一次提交记录。
HEAD^则表示HEAD的父提交,即最新的一次提交的上一次提交
HEAD~4则表示HEAD第一父提交的第一父提交的第一
如果把多次提交的节点看成是节点树的话,^可以理解为广度搜索,
~可以理解成深度搜索。
16, 如果是通过repo下载代码,如何查看当前是下载的哪个manifest配置文件?
.repo目录下的manifest.xml文件,或者是.repo/manifests/default.xml
通过该文件的配置参数查看。
17, 请描述manifest文件的意义,并详述其中的revision可以配置为什么?
repo用来管理多个git项目的,需要一个manifest的xml文件指示这些git 的属性。
manifest最顶层的xml
remote设置远程git服务器的属性,包括以下属性:
name远程git服务器的名字,直接用于git fetch,git remote等操作
alias远程git服务器别名,如果指定了,就会覆盖name的设定。
fetch所有projects的git URL前缀
review指定Gerrit的服务器名,用于repo upload操作。如果没有指定,repo upload 没有效果。
project元素 指定一个需要clone的git 仓库
name唯一的名字标识project,同时也用于生成git仓库的URL
path可选的路径。指定git clone 出来的代码存放在本地的子目录。如果没有指 定, 则以name作为子目录名。
revision指定需要获取的git提交点(分支),可以是 master ,refs/heads/master ,tag 或者SHA-1值。
18, 如何回退版本?
在git中版本的回退操作非常快,可以使用git reset命令。分为三种回退
模式,可以在分支上的各提交节点进行版本切换。
当执行gitpush命令后,发现有错误,可以执行git revert命令,将操作
撤销掉而作为新的一次提交,HEAD继续前进,新的commit的内容正好与要
Revert的内容相反,能够抵消revert的内容。而git reset是直接删除该提交节点
,HEAD向后移动。
需要对多个git仓库进行回退时,可以使用repo froall命令对要进行回退的项目
执行相同的回退命令。
19, 用patch-delivery提交代码的步骤?
步骤:1.如果是PR,需要对PR进行验证是否PR状态为OPEN-Accept状态。
2.在工作目录中修改代码,并在提交目录porting验证成功,先通过
git status命令查看修改状态。这时不能使用git commit进行提交代码
3.使用path_delivery_clid.php -p 项目名。
20, 提交代码有冲突的时候,如何解决?
(1) gitrebase 分支名称 本地分支名称
(2) rebase之后,就会显示冲突,到目标文件进行修改
(3) gitadd
(4) git rebase–continue
(5) gitrebase 分支名称 本地分支名称
(6) reposync
(7) reopupload
(8) 即可提交代码