• 本文记录了 git 与 gerrit 学习所得

  • 重点关注于当前所用到的实际操作部分,其余理论部分以及更复杂用法留待将来用到时继续补充

1 Git 与 Gerrit

  • Git 是当前全世界流行的分布式版本控制工具,但是只适用于纯文本文件,包括markdown、网页、代码等,一般不用于图片、视频、.doc文档等

  • 实际上是在当前目录下新建一个名为 .git 的隐藏文件夹,作为本地仓库 / 版本库(Repository),切记不可手动直接修改内容

  • Gerrit = Git + 强制代码审核

  • 只有通过了代码审核,才能提交至远程仓库然后合并(merge)

2 Git使用

2.1 一些概念

2.1.1 四块区域

git 在具体使用中,可分为三个区域:

  • 工作区(Working Directory):实际代码文件等存放的地方

  • 暂存区(Stage / Index):已经完成修改,等待最终提交文件的存放之处

  • 本地仓库 / 版本库(Repository):当前分支的最终更改提交处

加上远程仓库,实际可视为使用不同命令,实现文件在四个区域之间来回传输

2.1.2 本地与远程

  • 相较于传统的SVN等集中式版本控制系统,git 的最大优势在于无论有无网络,皆可工作:即可以把仓库建在本地,也可以建在远程服务器

  • 可以先在本地修改,完成后推送到远程服务器,或者是不通过服务器直接互相交换

  • 远程仓库既可以作为备份,又可以让其他人通过该仓库来协作

  • GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能改)因此不能把敏感信息放进去

2.1.3 分支

  • 每一次 commit 可视为增加一个时间节点,因此整个写代码、改代码、提交代码的过程可以串成一条时间线

  • 这条时间线即为默认状态下所用的 master 分支

  • 当多人合作,或者避免在主线上做改动,可以新建分支,例如 develop 分支:

  • 在 develop 分支中的修改完成后可以与 master 中的代码 合并(merge),然后删掉 develop 分支

  • 也可以继续增加分支适应不同删改需求:

2.2 流程

2.2.1 初始化

  • 用户配置

    • git config --global user.name "Your Name"

    • git config --global user.email "email@example.com"

    • 加了 “ --global ” 后,本台机器所有仓库都使用这个用户配置

  • 仓库建立

    • git init:建立仓库

    • 只能监控当前目录与子目录下的文件更改

2.2.2 提交修改

2.2.3 撤回修改

  1. 文件在版本库/仓库需要撤销:

  • 即,版本回退,流程如下:

  1. 文件在暂存区,需要撤销更改且需要退回工作区

  • git reset HEAD < file >

  • 撤销一次 git add,即将暂存区中的文件撤回到工作区

  1. 文件在暂存区,需要撤销更改但不需要退回工作区

  • git check --< file >

  • 撤销回到最近一次 git add 状态,即刚 add 时的状态

  1. 文件在工作区,需要撤销更改

  • git check --< file >

  • 撤销回到最近一次 git commit 状态,即与版本库/仓库中相同的版本

2.3 命令

  • git init:在当前目录下新建本地仓库

  • git pull:取回远程仓库代码,并于本地的合并

    • 实际上 git pull = git fetch + git merge

  • git add < file >:将 file 加入监控

  • git status:查看暂存区状态

  • git diff:查看修改(缓存区文件 V.S. 原始文件)

  • git reset:将暂存区的文档退回至工作区

  • git commit -m " <说明>":将暂存区中的文件提交至本地仓库,并附上<说明>

  • git log:查看上传记录(只有当次的操作记录)

    • --pretty=oneline:查看上传记录,且每条记录缩写至一行内

  • git reflog:查看所有历史命令与版本提交号

  • git checkout:查看当前分支

    • -a:查看所有分支

    • <分支>:切换到<分支>

git与gerrit基础概念相关推荐

  1. Git基础概念与Flow流程介绍

    文章目录 Git相关 基本概念 常见客户端 TortoiseGit Sourcetree Intellij Idea 命令行 常用命令 存储区域 命令之 add & commit &p ...

  2. 初中高级的 git 和 gerrit 技巧【大型项目实战总结 CR 经验】

    序 前半部分属于基础,后半部分属于进阶.从初级到中级再到我都 hold 不住的高级.全文共 12000 余字,超干超干的那种. 然而,写完一半的时候,我突然虎躯一震,我是不是在造轮子?随后我悄悄的搜了 ...

  3. Git、Gerrit、Repo三者的区别及使用

    Git.Gerrit.Repo三者的概念及使用 三者各自作用: git:版本管理库,在git库中没有中心服务器的概念,真正的分布式. repo:repo就是多个git库的管理工具.如果是多个git库同 ...

  4. Docker笔记1 基础概念和镜像

    基础概念 开发环境deepin linux 15.11.安装docker之后,执行命令: sudo usermod -aG docker $USER_NAME 让docker和当前用户在一个组中,可以 ...

  5. Git与GitHub基础全套完整版教程(持续更新....)

    Git基础 1使用Github 1-1目的 1-2基本概念 2 Git在本地的结构 3 Git和代码托管中心 局域网环境下 外网环境下 4 Git命令行操作 5 基本操作 状态查看: vim保存退出命 ...

  6. UnrealEngine5实操--基础概念(持续补充)

    UnrealEngine5实操--基础概念 Unreal 术语 UE5 上手指南 关卡快速搭建 视口标准按键操作 Editor 视角移动速度调节 Unreal Editor 快速测距 Actor 操作 ...

  7. Nebula Graph学习篇1_基础概念、初步使用、整合SpringBoot使用

    目录 一.基础概念 图数据库的概念 适用场景 数据模型 路径 点的VID 架构 二.初步使用 Windows安装Nebula-Graph服务 Nebula Console 连接 Nebula-Grap ...

  8. 谷粒商城项目篇1_分布式基础篇_分布式基础概念、环境搭建、创建项目

    写在前面 为丰富项目经验,特此学习B站开源视频<全网最强电商教程<谷粒商城>对标阿里P6/P7,40-60万年薪>希望通过此学习能巩固所学,将技术栈串接起来. 此项目三个阶段 ...

  9. 谷粒商城项目1——分布式基础概念、环境搭建

    二.分布式基础概念 1.微服务架构 一个单体应用开发为一套小服务,每个小服务在自己的进程中,并使用轻量级机制通信 拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行 2.集群.分布式 ...

最新文章

  1. Fckeditor PHP/ASP File Upload Vul
  2. int的长度_Java中String长度有限制吗?身边的同事每一个人知道!
  3. python爬虫学习:爬虫QQ说说并生成词云图,回忆满满
  4. ELK学习6_Kafka-Logstash-Elasticsearch数据流操作
  5. leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)
  6. 【ArcGIS遇上Python】ArcGIS Python实现批量化矢量和栅格数据重命名
  7. 猜数字游戏python程序用函数guesssecret_Python-三、函数
  8. python 方差_python统计分析总体方差检验
  9. python通过什么对象连接数据库步骤_python如何连接数据库
  10. 网盘助手插件chrome插件
  11. 2019-不得不了解的前端趋势
  12. vnc连接服务器怎么修改配置,VNC配置最详细易懂教程-图文并茂
  13. nacos connect timed out executing XXX
  14. 图解电脑上Firefox浏览器无法打开的解决办法
  15. 输入一个字符串,逆序并输出
  16. 英格兰的政治+德意志的工业科技+犹太的金融+北美的丰富资源=世界NO.1强国
  17. 传奇私服服务器怎么增加npc,传奇私服装备打造NPC设置方法
  18. 编写程序,实现一个基于面向思想的、具有开户、查询、取款、存款、转账、锁定、解锁和退出功能的银行管理系统。
  19. C语言:输入两个数字,将其按从小到大输出!
  20. 职业“小三劝退师”,真的能拯救你的婚姻吗?

热门文章

  1. 百度上传控件webUPload 的使用
  2. 无驱、代码自动植入:新一代软件保护锁——圣天诺LDK-HL
  3. 关于离线下载的一些免费的网站
  4. 买保险选大公司还是小公司?
  5. 【文献翻译】软件设计级漏洞分类模型-Software Design Level Vulnerability Classification Mode
  6. 【Java基础篇】封装(Encapsulation)
  7. python实现有道词典翻译
  8. python 来实现文件复制操作
  9. win10系统下jdk环境变量配置
  10. Pytorch中nn.Module中的self.register_buffer解释