当前位置: 首页 > news >正文

企业级开发——Git使用

一 Git介绍

1 什么是版本控制

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

2 为什么使用版本控制

采用手动复制的方式管理版本,会造成版本管理混乱,而通过版本控制管理,能记住针对软件的每一次改动,能够比较查看不同版本之间的异同,并且可以恢复到之前的任一版本;

有利于团队开发,能让团队中的成员了解到代码的最新情况,避免重复劳动,也便于解决代码冲突问题。

一些常用的版本控制软件包括:Git、SVN、CVS、TFS等

3 Git介绍

Git是一个开源的分布式版本控制系统,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

3.1 下载和安装

https://git-scm.com/

安装后,使用如下命令验证是否可以正常使用:

C:\Users\renrui>git --version
git version 2.35.1.windows.2

3.2 Git基本架构

工作区:就是你在电脑里能看到的目录。

暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

二 本地仓库

1 基本使用

1.1 配置用户和邮箱

用于记录提交是谁完成的,注意,此处配置的用户名和邮箱不会进行验证

git config --global user.name "renr"
git config --global user.email "123444@aliyun.com"

1.2 初始化仓库

1)创建本地仓库的文件夹
mkdir mysys
2)初始化仓库

先切换到仓库文件夹,再初始化

D:\>cd mysysD:\mysys>git init
Initialized empty Git repository in D:/mysys/.git/

初始化空仓库后,会生成一个.git目录

3) 将工作空间的修改添加到暂存区

在仓库中新建hello.txt文件

然后执行git add 命令

D:\mysys>git add hello.txt
4)暂存区内容提交到仓库
D:\mysys>git commit -m "create hello.txt"
[master (root-commit) f35de6b] create hello.txt1 file changed, 1 insertion(+)create mode 100644 hello.txt

-m 后面表示本次提交的说明

创建Git版本库时,Git自动为我们创建了一个master分支,所以,git commit就是往master分支上提交更改。

注意:修改文件内容后,需要再次执行add和commit命令

修改没有提交到暂存区时,如果想撤销修改,可以使用git checkout hello.txt命令操作

2 其他命令

2.1 查看仓库状态

git status

对文件进行修改,通过git status查看状态

2.2 对比查看修改了什么内容

git diff

2.3 查看修改的历史记录

git log

2.4 版本回退

git reset [--soft | --mixed | --hard] ,默认--mixed

1)--mixed

回退到指定版本后,该版本之后的修改放在工作区,没有放在暂存区,即回退了commit和add操作

注意:打开文件查看,其内容没有变化

2)-- soft

回退到指定版本后,该版本之后的修改放在暂存区,即回退了commit操作

注意:打开文件查看,其内容没有变化

3)--hard

回退到指定版本后,该版本之后的修改都会删除

注意:查看文件,发现文件中内容显示的是上个版本内容

2.5 撤销提交

git revert

通过该命令可以撤销某次提交,撤销提交时,原来的提交记录还会保留,同时会生成一个新的提交

弹出交互式页面,输入 :q,退出

如果revert时,不想自动生成新的提交,可以使用-n选项,比如 git revert -n head

查看日志,发现新生成了一个提交,查看文件,内容回退到上个版本

revert中间的某次提交时,可能会存在冲突

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C#面:ASP.NET MVC 中还有哪些注释属性用来验证?
  • 面试基本内容
  • 【Node】m1 mac 使用 nvm 安装 node v14 报错
  • Gartner报告解读:如何帮助企业完善数据分析与治理路线图
  • 生产环境中变态开启devtools(强制)
  • Kafka消息积压的典型场景及解决方案
  • python办公自动化:使用`Python-PPTX` 嵌入媒体文件
  • 智谱发布新一代基座模型
  • es、kibana及分词器的安装
  • 冲刺蓝桥杯第三章字符串
  • C语言通用函数 - 判断ip是否合法
  • 简述Glide的源码
  • 自动化脚本到LabVIEW转换
  • Django+Vue花卉商城系统的设计与实现
  • day04-面向对象-常用API时间Arrays
  • hexo+github搭建个人博客
  • Flannel解读
  • JavaScript 基本功--面试宝典
  • Js基础——数据类型之Null和Undefined
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • php的插入排序,通过双层for循环
  • Spring Boot MyBatis配置多种数据库
  • Webpack入门之遇到的那些坑,系列示例Demo
  • Web设计流程优化:网页效果图设计新思路
  • Windows Containers 大冒险: 容器网络
  • 从0到1:PostCSS 插件开发最佳实践
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 两列自适应布局方案整理
  • 浅谈web中前端模板引擎的使用
  • 区块链将重新定义世界
  • 思维导图—你不知道的JavaScript中卷
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信小程序:实现悬浮返回和分享按钮
  • 学习笔记:对象,原型和继承(1)
  • 怎么将电脑中的声音录制成WAV格式
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • No resource identifier found for attribute,RxJava之zip操作符
  • 阿里云服务器购买完整流程
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ![CDATA[ ]] 是什么东东
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #pragma once
  • #QT(智能家居界面-界面切换)
  • $forceUpdate()函数
  • (2)(2.10) LTM telemetry
  • (floyd+补集) poj 3275
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)Android布局类型(线性布局LinearLayout)
  • .gitignore不生效的解决方案
  • .NET Core中的时区转换问题
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net/c# memcached 获取所有缓存键(keys)