Git&Gerrit使用笔记——有这篇就够了

这篇具有很好参考价值的文章主要介绍了Git&Gerrit使用笔记——有这篇就够了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简单介绍

1、Git

        全称Global Information Tracker,或者 stupid content tracker,分布式版本控制系统。

        Git没有中央服务器,每个协作开发者的电脑都是一个完整的版本库,工作时无需联网只需推送。Git可以记录所有的变更记录,可以方便查询和回滚历史版本。

2、Gerrit

        Gerrit是建立在Git之上、基于Web的代码审查工具。

        Geriit同Git免费、开源,作为网页版代码审查软件,向协助开发者提供代码审查平台,以审阅修改后的程序代码决定是否能够提交Merge,或者退回修改完善代码,从而保证代码质量。

二、Gerrit服务器搭建

(23条消息) Gerrit代码审核服务器搭建全过程_girret_hanpfei的博客-CSDN博客

三、本地开发配置

1、安装Git

        下载链接:Git - Downloads (git-scm.com)。

        根据本地机器OS版本下载相对应版本,并根据个人偏好进行Git设置。

2、配置Git

2.1、配置用户名和邮箱

git config --global user.name "Your Name" git config --global user.email "Your E-mail Address"

2.2、本地创建SSH key

        本地 Git 仓和 GitHub 仓通过SSH加密传输,因此需要配置验证信息。进入Git工作目录,邮件“Git Bash Here”打开Git终端,执行以下命令生成 SSH Key:     

ssh-keygen -t rsa -b 2048 -C "邮箱地址"

这里rsa也可以换成其他的加密算法

   之后在Windows用户目录下生成.ssh文件夹。

2.3、Gerrit添加SSH key

·        登录远程Gerrit服务器,配置自己的账户信息,添加SSH key。

git配置gerrit,git,笔记,elasticsearch

四、Git常用命令

1、本地仓操作

1.1、git init

        本地建仓,对本地当前目录进行Git初始化。

        如果需要建立本地仓库track自己的代码修改,那么可以使用git init的方法建仓,然后将代码拷贝至此文件夹中。

1.2、git add

        将修改添加至暂存区。文件修改后,文件被保存在工作区,通过git add命令将文件添加至暂存区,以便于下一步commit。

# 将指定文件放入暂存区 
$ git add <file> 

# 将指定目录下所有变化的文件,放入暂存区 
$ git add <directory> 

# 将当前目录下所有变化的文件,放入暂存区 
$ git add .

1.3、git commit

        将修改提交至仓库区。修改经过git add之后被保留在暂存区,之后通过git commit进行提交。git commit使用语法:

git commit <filename> -m "message"
可以指定某一个<filename>,或者不加<filename>直接提交当前所有暂存区的内容

-s:添加commit签名
-m:添加提交说明
--amend:撤销上一次 commit,然后生成一个新的 commit
--fixup:当前commit是以前某个commit的修正,执行git rebase后两个commit合并一个
--no-edit:commit不改变之前commit message的内容

2、本地仓查看

2.1、git diff

        查看文件/分支之间的差异。

# 查看工作区与暂存区的差异(默认为--staged)
$ git diff <filename> --staged

# 查看暂存区与仓库区(当前 commit) 的差异
$ git diff --cached

# 查看两个commit的差异
$ git diff <commitBefore> <commitAfter>

# 查看工作区与某个 commit 的差异(上一次commit:HEAD)
$ git diff <commit>

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

# 查看工作区与当前分支上一次提交的差异,但是局限于test文件
$ git diff HEAD -- ./test

# 查看topic分支与master分支最新提交之间的差异
$ git diff topic master(或者$ git diff topic..master)

# 查看自从topic分支建立以后,master分支发生的变化
$ git diff topic...master

2.2、git show

        查看commit的内容。

# 输出某次提交的元数据和内容变化
$ git show [commit]

$ git show 12a86bc38 # By revision
$ git show v1.0.1 # By tag
$ git show feature132 # By branch name
$ git show 12a86bc38^ # Parent of a commit
$ git show 12a86bc38~2 # Grandparent of a commit
$ git show feature132@{yesterday} # Time relative
$ git show feature132@{2.hours.ago} # Time relative

2.3、git log

        查看提交历史。

# 列出当前分支n条版本历史,不加-n则列出所有版本历史
$ git log -n

# 列出某个文件的版本历史,包括文件改名
$ git log --follow [file]

3、本地与远程仓交互

3.1、git clone

        克隆远程仓库到本地目录。

$ git clone 远程仓链接

3.2、git fetch

        获取远程仓最新内容下载到本地,不直接执行合并操作,用户决定是否合并。

git fetch <远程主机名> <分支名> 
如果省略分支名,那么将远程仓更新全部取回本地

3.3、git pull

        相当于git fitch+git merge,获取远程仓最新内容并直接合并,这样可能会产生冲突,需要手动解决。

git配置gerrit,git,笔记,elasticsearch

3.4、git push

        将本地分支推送到远程仓并合并,在本地commit完成后需要推送到远程时使用。

git push <远程主机名> <本地分支名>:<远程分支名>
如省略远程分支,那么本地分支将推送到与之存在追踪关系的远程分支(通常两者同名)
如该远程分支不存在,则会被新建

例如:
git push origin HEAD:refs/for/master
origin : 远程库名
HEAD: 指向当前本地工作分支的指针
refs/for: 提交代码到服务器需code review才能merge
refs/heads:直接merge,无需code review

4、分支操作

4.1、git branch

        用于分支操作。

# 列出所有分支,-a表示本地和远程所有分支,-r表示远程所有分支,不加参数表示本地
$ git branch [-a/-r]

# 新建分支
$ git branch 分支名

# 删除分支,D表示强制删除
$ git branch -d/D <分支名>

# 分支改名
$ git checkout -b 新名 旧名
$ git branch -d 旧名

4.2、git checkout

        切换分支或者标签等。

# 创建并切换至新分支,不加-b则直接切换 
$ git checkout -b 新分支名

5、撤销与回退

5.1、三个恢复等级

        --soft 、--mixed以及--hard是三个恢复等级。

--soft:仅将头指针恢复,已经add的暂存区及工作空间的代码都不变 
--mixed:将头恢复掉,已经add的暂存区也会丢失掉,工作空间代码不变。 
--hard:一切就全都恢复了,头变,aad的暂存区消失,代码恢复到以前状态。

5.2、撤销上一次commit提交

# 撤销上一次commit, 不会撤销git add 
$ git reset --soft head~1 

# 撤销上一次commit, 同时撤销git add 
$ git reset head~

5.3、回退到某一次commit提交

# 彻底回退到某一个commit 
$ git reset --hard <Commit-ID>

5.4、回退到上n次commit提交

# 当前版本 
$ git reset --hard head 

# 回退到上一个版本 
$ git reset --hard HEAD^ 

# 回退到上上一个版本 
$ git reset --hard HEAD^^ 

# 回退到往上3个版本 
$ git reset --hard HEAD~3 

# 回退到往上10个版本 
$ git reset --hard HEAD~10

五、Gerrit使用流程

1、获取服务器最新代码

        git clone "ssh:/用户名@远程仓IP:端口/仓库名" && scp -p -P 端口 用户名@远程仓IP:hooks/commit-msg "satool/.git/hooks/"。通过此命令获取远程仓代码下载至本地,同时将commit-msg文件拷贝至本地。

2、本地修改与commit

        本地完成修改之后通过git add添加至暂存区,然后进行commit提交。

3、推送至远程仓

        通过git push origin HEAD:refs/for/远程分支名,将本地修改提交至Gerrit进行审视。refs/for的意义在于提交代码到服务器之后需要经过code review才能进行merge,而refs/heads不需要,直接进行merge。

4、添加Reviewers&CC

        完成本地仓推送至远程后,进入Gerrit平台,添加Reviewers&CC,添加代码代码协作者进行代码审阅。

5、Merge合入

        代码提交完成审阅并+2确认后,将显示Ready to Submit状态,这个时候点击Submit即可Merge合入。

git配置gerrit,git,笔记,elasticsearch

六、常见问题

1、commit message缺少Signed-off-by信息

问题原因:git commit提交的时候没有带上-s签名参数。

解决办法:git commit -s --amend --no-edit。

2、commit message缺少Change-Id信息

git配置gerrit,git,笔记,elasticsearch

 问题原因:.git/hooks目录下缺少commit-msg文件,往往是初次从远程服务器下载的时候没有通过scp命令拷贝commit-msg文件。

解决办法:scp -p -P 端口 用户名@远程仓库IP:hooks/commit-msg "本地hooks目录",先获取commit-msg文件,然后再进行ammend,git commit --amend --no-edit,那么将会附加一行Change-Id信息。

git配置gerrit,git,笔记,elasticsearch

3、获取远程仓后无法看到其他分支源码

问题原因:初次获取远程仓库后默认master主分支,显示主分支源码内容。其他分支源码需本地切换到其他分支方可显示。

解决办法git checkout -b readmmio origin/readmmio,创建并切换与远程分支对应的本地分支,之后便可以看到本地文件夹显示远程仓分支源码。

七、参考资料

1、https://blog.csdn.net/u011086209/article/details/116593218

2、https://blog.csdn.net/u010312474/article/details/107915694

3、https://git-scm.com/docs/git-init/zh_HANS-CN

4、https://www.bookstack.cn/read/git-tutorial/docs-commands-git-commit.md

5、https://www.cnblogs.com/runnerjack/p/9342362.html文章来源地址https://www.toymoban.com/news/detail-672118.html

到了这里,关于Git&Gerrit使用笔记——有这篇就够了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】关于openpyxl的基本使用方法-看这篇就够了

    目录 ​编辑 一、下载安装与引用 二、创建工作簿并写入数据 创建工作簿 创建工作表 写入数据 保存数据 三、读取表格并查找数据 读取表格 读取指定工作表 重命名指定工作表 获取单元格数据 四、其他操作  多个工作表之间的切换 处理行和列 格式化单元格 修改工作表标题

    2024年02月10日
    浏览(33)
  • 【C语言初阶】分支语句If与switch的具体用法,有这篇博客就够了

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,今天又来给大家更新0基础学习C语言中的文章啦! 今天带来的是对分支语句的详解,初学者建议先看看总集哦, 这里是链接: 【C语言初阶】万字解析,带你0基础快速入门C语言(上) 【C语言初阶】万字解析

    2024年02月11日
    浏览(51)
  • Linux,看这篇就够了

    因为我们要部署服务,Linux系统一直以其稳定性而闻名,它们可以连续运行多年而不发生任何重大问题。事实上,很多Linux用户都从未在自己的环境中遇到过系统崩溃的情况。相对windows而言,挂起和崩溃完全是一种常态。 Windows由于是商业产品,源代码封闭,我们无法知道微软

    2024年02月08日
    浏览(31)
  • 看这篇就够了——ubuntu系统中的cuda cudnn cudatookit及pytorch使用

    独立显卡是指以独立板卡形式存在,可在具备显卡接口的主板上自由插拔的显卡。独立显卡具备单独的显存,不占用系统内存,而且技术上领先于集成显卡,能够提供更好的显示效果和运行性能。显卡作为电脑主机里的一个重要组成部分,对于喜欢玩游戏和从事专业图形设计

    2024年01月17日
    浏览(37)
  • 测试基本理论-看这篇就够了

    软件测试(Software Testing): 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 【系统软件】:如操作系统、数据库管理系统,各种驱动软件等; 【应用软件】:如Office、有道翻译、QQ等; 【单机版本】:如Office,

    2024年02月06日
    浏览(39)
  • 面向对象编程,看这篇就够了

    面向对象编程,是一种程序设计范式,也是一种编程语言的分类。它以对象作为程序的基本单元,将算法和数据封装其中,程序可以访问和修改对象关联的数据。这就像我们在真实世界中操作各种物体一样,比如我们可以打开电视、调整音量、切换频道,而不需要知道电视的

    2024年02月05日
    浏览(65)
  • 看这篇就够了——opencv与libopencv与cv_bridge的安装与使用

      OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库,是由Intel公司俄罗斯团队发起并参与和维护,支持与计算机视觉和机器学习相关的众多算法。OpenCV基于C++实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合

    2024年02月03日
    浏览(33)
  • Python OpenCV 入门 这篇就够了

    目录 1.初步认识OpenCV 1.1OpenCv概述 1.2OpenCV模块 2.图像处理的基本操作 2.1 imread()方法读取图像 2.2 显示图像 2.2.1 imshow()方法显示图像 2.2.2 waitKey()方法设置按键事件 2.2.3 destroyAllWindows()方法销毁所有窗口 3.3 imwrite保存图像 3.4 获取图像属性 3.4.1 shape属性获取图像的形状 3.4.2 size属性

    2024年02月22日
    浏览(25)
  • 关于SpringBoot框架,看这篇就够了。

    目录 是什么 有什么优点、解决了哪些问题 创建第一个以springboot项目 starter 核心配置文件application.yml或properties application中的配置项 springboot的启动流程 自定义banner 整合日志打印 整合druid数据源 处理异常 常用的注解 Configuration Import conditional ConfigruationProperties 基于springboot的

    2024年02月06日
    浏览(38)
  • IIC通信协议,搞懂这篇就够了

    注:公众号后台发送 “ IIC ” 即可获取基于STM32上实现软件模拟IIC的完整代码。 I2C( IIC )属于两线式串行总线,由飞利浦公司开发用于微控制器(MCU)和外围设备(从设备)进行通信的一种总线,属于 一主多从(一个主设备(Master),多个从设备(Slave))的总线结构 , 总线上的每个设备

    2024年02月06日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包