gerrit常用命令笔记

repo使用笔记:
rsync -avr .repo [username]@yourServerIP:/home/ 同步.repo配置到目标服务器绝对路径下
repo sync -l 同步完上面.repo配置后使用此命令同步代码
repo list -nr sboot 列举sboot仓库路径
repo list dtv/fusion-bsp2/mstar/mboot/sboot 查仓库映射关系
git使用笔记:
一、新服务器git环境配置
git config --global user.name "[username]" 配置用户名
git config --global user.email "[emailAddress]" 配置邮箱
ssh-keygen 生成ssh-key,拷贝~/.ssh/id_rsa.pub内容到gerrit上注册
二、提交修改部分
1、git diff [filename] 显示本地与远程git库中文件差异
-b PATH,忽略空格,显示差异
2、git stash,保存工作区修改的现场,以得到干净的代码
-- pop,恢复保存的工作区修改,继续未完成的工作
-- list,查看stash列表
-- clear,清除所有的stash history
3、git status,查看工作目录状态,包含当前分支信息及修改信息等。git add xxx或git add -i,添加到commit暂存区(如果add之后再次修改相同文件,需要再次add,否则第二次修改的内容不会被放到暂存区)
4、git reset HEAD <file>...,撤出暂存区(与add相反)
5、git commit -m "Comment Something"或者git commit -F xxx.log,添加版本注释,并提交暂存区到本地版本库
6、git commit --amend 在当前commit上修改提交内容
7、git reset --soft HEAD^,回滚最近一次commit,重新修改后,可以再次commit。
8、git push origin master,推送本地版本修改到远端分支(也可用第14点方法)
PS:在不知道远端服务器名称和当前分支的情况下使用以下命令进行推送
git branch -avv 查看远端服务器名称和分支名
git push origin-server HEAD:refs/for/master 将当前master分支的修改推送到远端origin-server服务器
二、其他
1、git checkout master,切换到master分支。
git checkout -b dev,创建d并切换到dev分支。
2、git merge --no-ff -m "merged bug fix 101" dev,整合dev分支到当前分支
3、git branch -d dev,删除dev分支
4、git push origin dev:master,推送本地dev分支(commit版本)到远端master分支
5、git pull origin master:dev,从远端master分支取回合入本地dev分支
6、git remote show origin,显示本地remote与远端的关系
7、git remote prune origin,移除本地remote仍记录,但远端已不存在的分支(也可用第19点方法)
8、git reset --hard origin/master,放弃本地修改,reset之后所有本地修改都会被清除
9、git fetch -p,在fetch之后删除掉没有与远端分支对应的本地分支
10、git log -p -2,显示最近两个版本的详细修改内容
11、git log --name-only,显示log及对应修改的文件(不显示具体内容,只显示文件名)
12、git remote rm origin,去掉origin定义
13、git remote add origin username@yourServerIP:DirPathOrGitFile,增加origin定义
14、git clone username@yourServerIP:DirPathOrGitFile
15、git -C [Git Local PATH] log,切换到包含git的目录下,执行log命令
16、git remote set-head origin remote_branch_xxx,切换远程分支到remote_branch_xxx
17、git push origin HEAD:refs/for/CTV_Baseline_828,gerrit审核分支
18、git status -uno PATH,或git status --untracked-files=no PATH,显示指定路径git修改,不包含未跟踪文件
19、git cherry-pick [commit-id or Range],可将指定版本的修改merge到当前分支,并自动commit。
20、git log remotes/xxx,可指定远端分支,查看log。
21、git diff -b PATH,忽略空格,显示差异
22、git show [TAG] -s,显示tag对应的详细信息,并忽略详细的文件修改。
23 --name-only commit 只显示指定commit修改的文件名。
24、git clean -dfx,清除所有无版本记录的文件夹、文件,包含ignore。
25、git add -f -A .,添加当前目录所有文件修改到缓冲区,包含ignore文件
26、git status --ignored,显示所有文件状态,包含ignore文件
27、git archive -o latest.zip HEAD,将HEAD的完整版本压缩打包
28、git branch –m oldname newname,重命名分支,如果newname已存在将提示后取消,若把-m改为-M则无视,直接覆盖。
29、git gc,压缩git快照文件,节省磁盘空间
30、git log --pretty=fuller --name-only,显示author和committer全部信息。
31、git push aosp :refs/tags/CTV_Baseline_338_Develop,删除远程Tag
32、git tag -a CTV_638_5.04_OK -m "CTV_638_5.04_OK",在本地打Tag
33、git push aosp --tags,将本地Tag推到远程aosp服务器
34、git reflog 显示所有改变HEAD指针的操作记录及其hashID

三、打patch部分
1、生成patch命令
$ git format-patch HEAD^        #生成最近的1次commit的patch
$ git format-patch HEAD^^       #生成最近的2次commit的patch
$ git format-patch HEAD^^^       #生成最近的3次commit的patch
$ git format-patch HEAD^^^^      #生成最近的4次commit的patch
$ git format-patch <r1>..<r2> #生成两个commit间的修改的patch(包含两个commit. <r1>和<r2>都是具体的commit号)
$ git format-patch -1 <r1> #生成单个commit的patch
$ git format-patch <r1> #生成某commit以来的修改patch(不包含该commit)
$ git format-patch --root <r1>    #生成从根到r1提交的所有patch
$ git diff commitID1 commitID2 > 0001-limit-log-function.patch #diff命令生成patch
2、检查patch
$ git apply --stat 0001-limit-log-function.patch      # 查看patch的情况
$ git apply --check 0001-limit-log-function.patch     # 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上
(注:git apply是另外一种打patch的命令,其与git am的区别是,git apply并不会将commit message等打上去,打完patch后需要重新git add和git commit,而git am会直接将patch的所有信息打上去,而且不用重新git add和git commit,author也是patch的author而不是打patch的人)
3、am命令打patch
$ git am 0001-limit-log-function.patch # 将名字为0001-limit-log-function.patch的patch打上
$ git am --signoff 0001-limit-log-function.patch # 添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
$ git am ~/patch-set/*.patch              # 将路径~/patch-set/*.patch 按照先后顺序打上
$ git am --abort # 当git am失败时,用以将已经在am过程中打上的patch废弃掉(比如有三个patch,打到第三个patch时有冲突,那么这条命令会把打上的前两个patch丢弃掉,返回没有打patch的状态)
$ git am --resolved #当git am失败,解决完冲突后,这条命令会接着打patch

上一篇:【gerrit中】Git相关整理


下一篇:爬取gerrit代码提交信息