当前位置:   article > 正文

Gerrit 相关使用教程

gerrit

一、更新代码

1、更新全部代码

根目录执行:repo sync

筛选更新:repo sync -c --no-tags -d -j8

        一般 repo sync 都会加上 -j4、-j8,代表最多可以多少个线程同时执行。主要根据个人电脑配置自行选择(建议 8G 内存使用 -j4,16G 内存使用 -j8)。

2、更新局部代码

指定目录下执行:git pull

3、重新下载代码

1)忽略本地的改动,强制重新下载代码

repo sync -d

2)下载过程中出现错误,继续下载

repo sync -f --force-sync

        -f 使遇到网络错误时继续下载,--force-sync 表示出现冲突时继续下载。

二、分支

1、查看分支

本地分支:git branch

远程分支:git branch -r

所有分支:git branch -a

查看本地分支及关联的远程分支:git branch -vv

2、切换分支

直接切换:git checkout <name>

创建新分支并切换:git checkout -b <name>

覆盖本地代码并切换:git checkout -f <name>

创建本地分支并绑定远程分支

git checkout -b 本地分支 origin/远程分支

切换目录下所有仓库分支(循环切换)

repo forall -c git checkout <name>

修改关联的远程分支

git branch --set-upstream-to=<新分支路径>

3、删除分支

删除本地分支

git branch -d <本地分支名>

git branch -D <本地分支名>

        如果本地分支没有与远程分支完全合并,且放弃合并时直接使用 -D 进行删除。

删除远程分支

git push origin --delete <分支名>

三、提交代码

1、查看修改

查看修改文件:git status

查看修改内容:git diff

2、提交代码到暂存区

全部提交:git add .

提交指定文件:git add <文件路径>

3、提交到远程分支

1)添加描述信息

单行信息:git commit -m "描述信息"

多行信息:git commit

        这里多行信息处理还需要解释一下,git commit 进入到信息编辑窗口,这里还要对 Linux 和 Windows 分别介绍:

Linux

        直接在上面填写信息,Ctrl+X 进行数据保存,退出即可。

Windows

        输入小写字母 i 进入编辑模式,填写信息。

        按 esc 键退出编辑模式,输入 :wq 保存退出。也按 esc 退出编辑模式后,连续按输入两个大写字母 Z 退出。

2)提交到指定分支:git push <XXX> HEAD:refs/for/<分支名称>

4、特定提交应用到其他分支上

        当我们需要将同一套修改提交到多个不同分支上时,首先想到的是切换不同分支依此提交,当然这种方式也可以,但 Gerrit 为我们提供了一个更简便的方法。

git cherry-pick <commit-id>

        首先提交分支会得到一个 commit-id,提交其他分支时直接使用上面命令即可。也可以在 Gerrit 网站上操作。

1)点击右上角三个点按钮。

2)选择第一个 Cherry pick。

 3)在 Cherry Pick to branch 下填写分支名称。

4)点击 CHERRY PICK 即可。

四、修改提交

1、修改描述信息:

git commit --amend

        ps:注意不要修改 id 内容

2、版本回退

git reset --mixed(默认)

        将指定 commit id 撤回之后所有内容全部放进工作区中。可以省略 --mixed,直接使用 git reset。

回退到上一个版本:git reset HEAD^
回退指定文件到上一个版本:git reset HEAD^ xxx.java
回退到指定版本:git  reset  版本ID

reset --soft

        将指定 commit id 撤回之后所有内容全部放进暂存区。

回退上上上一个版本:git reset --soft HEAD ~3

reset --hard:

        将指定 commit id 撤回并清空工作目录及暂存区所有修改。撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。

回退上上一个版本 :git reset --hard HEAD~2
回退到指定版本:git reset –hard 版本ID
与远程代码同步:git reset --hard origin/master

        谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。 

远端对齐

        如果本地没有修改,或者放弃本地修改,可以直接使用远端对其。

git reset --hard origin/xxx_xxx

HEAD 说明

HEAD 表示当前版本

HEAD^ 上一个版本

HEAD^^ 上上一个版本

HEAD^^^ 上上上一个版本

以此类推...

可以使用 ~数字表示

HEAD~0 表示当前版本

HEAD~1 上一个版本

HEAD~2 上上一个版本

HEAD~3 上上上一个版本

git reset HEAD

        git reset HEAD 命令用于取消已缓存的内容。例如,我们需要撤销 commit1:

git revert commit1

        执行上述命令后,git 会创建一个名为 "Revert commit1" 的新提交,该提交会删除 commit1 的所有修改。需要注意的是,git revert 命令不会删除历史提交,因此更加安全和可靠。 

git revert

        git revert 命令会创建一个新的提交,该提交会反转我们指定的提交内容。

4、取消本地修改

        有时我们会误修改了文件或者不想提交某些文件,而又不想删除它。这时,我们可以使用git取消修改命令来撤销这些修改。

放弃单个文件修改:git checkout -- <文件名称>

放弃所有文件修改:git checkout . 

        git checkout 命令可以用来切换分支或者恢复文件。当我们使用 git checkout -- <文件名>命令来恢复文件时,它会将该文件回退到最近的提交状态。也就是说,该文件的所有修改都将被取消。 注意不要忘记中间的"--",不写就成了检出分支了。

5、Gerrit网站操作

修改提交内容 

1)点击右上角 EDIT 按钮,进入编辑模式。

2)点击进入要修改的代码,并进行修改。

3)点击右上角的 SAVE 保存代码。

4)保存成功,点击右上角的 CLOSE 按钮退出代码编辑界面。

5)修改完成,点击右上角的PUBLISH DEIT按钮发布代码即可。

放弃本次提交

        使用 ABANDON 功能放弃本次提交,同时还需要在本地分支使用命令 git reset HEAD^ 回退版本。再重新提交。

查找对应分支

        通常修改一段代码后,需要知道该代码都用在了哪些分支上,可以使用如下步骤查找:

1)点击操作栏 BROWSE 后选择 Repositories。

2)再输入框中输入修改文件对应的路径,点击对应的搜索内容。

3)选择这边栏的 Branches 选项。

        这样就可以直接查看对应的分支列表。同时,在该页面也可以复制对应的 ssh 链接,直接粘贴到命令窗口进行对应的的代码下载。

6、修改提交地址

在提交代码模块下找到 .get 文件夹

修改 config 文件中的 url 地址即可

五、查看暂存区

查看暂存区中文件信息:git ls-files

–cached(-c):显示暂存区中的文件,git ls-files命令默认的参数
–deleted(-d):显示删除的文件
–modified(-m):显示修改过的文件
–other(-o):显示没有被git跟踪的文件
–stage(-s) :显示mode以及文件对应的Blob对象,进而我们可以获取暂存区中对应文件里面的内容。

六、配置SSH

1、Windows系统

查看SSH

命令:vim ~/.ssh/id_rsa.pub

输入o 回车

退出查看:按esc,输入 :q

配置SSH

ssh-keygen -t rsa -C "个人邮箱"

ssh-agent bash

ssh-add ~/.ssh/id_rsa

添加到Gerrit

        进入 Gerrit 设置界面,选择 SSH Keys,添加上面的 SSH Keys 即可。

2、Linux系统

        在主目录下找到 .ssh 文件夹,这里就是 ssh 相关信息。

查看SSH

        找到 /.ssh/id_rsa.pub 文件,双击打开即可。

配置SSH

        找到 /.ssh/config 文件,并使用下面命令打开文件(双击打开文件可以查看但无法编辑)。

sudo gedit config

         配置 gerrit 信息

Host 192.168.1.1
HostName 192.168.1.1
User xiaoxu
IdentityFile ~/.ssh/id_rsa

添加到Gerrit 

  进入 Gerrit 设置界面,选择 SSH Keys,添加上面的 SSH Keys 即可。

七、patch使用

1、生成patch

生成最近1次commit的patch:git format-patch HEAD^ 或 git format-patch -1 HEAD

生成最近2次commit的patch:git format-patch HEAD^^ 或 git format-patch -2 HEAD

生成单个commit的patch:git format-patch -1 <r1>(<r1>为commit id)

2、打patch

打单个补丁

检查patch文件:git apply --stat newpatch.patch
检查能否应用成功:git apply --check newpatch.patch
打补丁:git am --signoff < newpatch.patch

        打补丁时可以使用 -s 或 --signoff 选项,可以commit信息中加入 Signed-off-by 信息 

批量打补丁

git am --abort
git am patch/*.patch

八、Git LFS

        Git 本地会保存文件所有版本,对于大文件很容易导致仓库体积迅速膨胀,Git LFS(Large File Storage)是一个 Git 的扩展,用于实现 Git 对大文件的支持。简单的说,就是如果你想传超过100M的二进制文件到 GitHub,你就要用 Git LFS。

1、代码更新

        使用了 LFS 上传代码后,下载代码是也会有所区别,指定目录下更新代码:

git lfs pull

         全部更新,repo sync后执行:

repo forall -c "git lfs pull"

2、异常处理

Encountered 7 file(s) that should have been pointers, but weren‘t

        Git 仓库启用了 LFS,更新代码时莫名其妙的显示一些出现修改,然而使用上面的一些丢弃命令、覆盖更新等都不起作用,都会出现上面的错误。

直接一次性执行下面命令:

git rm --cached -r .;git reset --hard;git rm .gitattributes;git reset .;git checkout .

九、代码暂存

        使用场景:在 branch_1 上修改了部分代码,这时 branch_2 项目来了一个急需修改的 Bug,并且要修改的位置与 branch_1 还相同。由于 branch_1 还未修改完成无法提交,而且由于有修改代码也无法切换分支。这就需要使用到暂存功能,先将 branch_1 的修改暂存,在修改完 branch_2 的 Bug 后,回到 branch_1 取出暂存继续修改即可。

查看保存:git stash list

保存:git stash save "自定义命名"

恢复保存:git stash apply 0(0为列表id)

删除保存数据:git stash drop stash@{1}

十、其他

1、查看Log

上次提交:git show

提交历史:git log

2、帮助命令

git help

3、提交对比

安装:sudo apt install gitk

使用:gitk

4、查看Gerrit信息

git remote -v

更多功能:https://mp.weixin.qq.com/s/8lhyBCnvOst2iKy-UFUo3Q

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号