Git 基础知识回顾及 SVN 转 Git 自测

背景

项目开发过程中使用的版本控制工具是 SVN,Git 多有耳闻,以前也偶尔玩过几次,但是工作中不用,虽然本地也有环境,总是不熟练。

最近看一本网络开源技术书时,下载源码部署了一下,又温故了一下 Git 的用法,思考一个问题:如果现在我们的版本控制工具从 SVN 转换到 Git,我能不能直接上手呢?

本文汇总一下 Git 的基础知识和转换需要的基本流程,要上手也是没问题,资料来源于网络,说实话,资源真是多啊,如果真要换 Git ,现学现用足够了。

Git 原理

  1. Git 是什么?Linux 的源代码版本控制工具,在 BitKeeper 收费后,该团队自己开发的一个版本控制工具。
  2. Git 和 SVN 的区别是什么?存储方式不同。
    Git 存储的是全量快照:
    在这里插入图片描述
    途中的虚线是指相对上个版本没变化的文件,那么它就只存储一个指向上个版本的指针,其他变化的文件作为本版本的文件。而 SVN 保存的差异信息:
    在这里插入图片描述
    版本 V2 记录了相对 V1的增量变化内容。

Git 的基本思想:

  • 分布式版本控制工具,每个主机上的本地仓库都是一个节点,commit 也只是提交到本地仓库的,然后通过 push 到原创共享仓库
  • 直接记录快照,而非差异比较。
  • 近乎所有的操作都在本地执行,除了推送操作外。
  • 时刻保持数据的完整性。
  • 多数操作都是添加数据的操作。
  • 文件的三种状态:CMS「客户管理系统缩写记住它们」(Commit、Modified、Stated)

Git 操作

Git 的常用操作:

  • git init
  • git clone
  • git add
  • git commit
  • git pull
  • git fetch :与 git pull 的区别是,不会自动合并,用于需要人工比对差异的情况,然后再手动执行 merge。相当于查看变动,如果没有冲突或者没有问题,就可以直接执行 pull 拉取操作了。
  • git push
  • git log
  • git status
  • git config

Git 的换行配置

  • LF:line feed(单个字符\n),Linux 下的换行符号,含义:换行。
  • CRLF:carriage return line feed(回车换行,两个字符:\r\n),Windows下的换行符号。

LF 和 CRLF 的历史遗留故事,Windows 操作系统和 Linux 操作系统的差异为版本控制带来的问题。

解决办法是配置 core.autocrlf

true :最初的换行符号提交到 Linux 上了,都是 LF,但是下载到本地的时候,自动转换为 CRLF,为了 Windows 系统而推荐的配置。

input:所见即所得,适合 Linux 和 macOS。

结论就是:在 Window 主机上的配置应该为 true ,自动处理行尾,在 Linux 或 MAC 上设置为 input ,所见即所得,本地获取时不处理行尾。

SVN 日常操作

本地使用的 SVN 工具是 SnailSVN,日常基本操作有:

  1. 检出
  2. 更新
  3. 提交
  4. 查看日志
  5. 变更比对

Git 工具

Git 的也有图形化工具 SourceTree,界面很清爽,对比 SVN 的日常操作,有这个工具就够了,尤其是它能直接在界面上显示待提交的文件变化:
在这里插入图片描述
这个功能太好了,尤其是我在 SVN 使用的时候,都是在文件目录下逐个对比差异的。

直接找到 SourceTree 的工程路径,然后在 IDEA 中打开就可以了,所有的修改状态自动对应到当前选中的分支上。

论工具的使用,本人还是属于熟练工的一种吧!各种技术、工具啊,真的是够多的,像我这种只会用工具、抽象创造力匮乏的人,算不上科技人才吧,妥妥的工具人!

启示录

IDEA 里面有 Git 的工具了,SourceTree 都省了。不过分开有个好处就是:IDEA 里面专注代码编写,SourceTree 里面专注代码提交。

最后还有一个疑问:Git 分支切换过程中,被导入 IDEA 中的项目源码会自动跟着切换吗?我可不可以一边对分支 A 编码,一边再切换到分支 B 呢?

Git 有一个限制:分支切换时,需要决定在当前分支上的修改内容是否需要提交,如果选择忽略改动的话,所有文件的修改就被丢弃。
在这里插入图片描述

就是说分支可以随便切,但是必须决定如何处理本地变更。

回顾一下 SVN 的分支管理:创建新分支,导出项目源码到本地,导入到 IDEA,开发。创建的分支越多,就需要重复执行代码检出操作,占据的磁盘空间就会堆积越多。开发过程中,不同分支直接的切换操作也很麻烦。对比来看,Git 的分支管理确实很方便。

最后一个疑问:一个 Git 库下所有分支的代码是共用同一份源代码的磁盘空间的吗?SVN 的不同分支,检出来源码都是独占一份磁盘空间的,Git 是这样的吗?感觉 Git 不同分支的源码存储空间跟 SVN 不一样的,但是没找到说明依据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精读《算法题 - 二叉树中的最大路径和》

今天我们看一道 leetcode hard 难度题目:二叉树中的最大路径和。 题目 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点…

随时随地时时刻刻使用GPT类应用

疑问 很多人说GPT的广泛使用可能会使人们失业,会对一些互联网公司的存活造成挑战,那么这个说法是真的吗? 这个说法并不完全准确。虽然GPT等AI技术的广泛应用可能会对某些行业和职业产生影响,但并不意味着它会导致人们失业或互联网…

群晖7.2版本安装Jellyfin

一、添加三方套件库 打开桌面【套件中心】,点击右上角的【设置】-【套件来源】-【新增】,添加矿神库 名称:我不是矿神 位置:https://spk7.imnks.com/ 二、安装Jellyfin 【套件中心】-搜索【Jellyfin】-【安装套件】 集显版群…

【MySQL--->索引】

文章目录 [TOC](文章目录) 一、索引概念二、B树与B树1.B树的特点:2.B树的特点:3.为什么使用B树而不使用B树 三、聚簇索引和非聚簇索引四、索引操作1.创建索引2. 删除索引3.全文索引 一、索引概念 mysql的查询的过程是从文件中提取到内存中查询,MySQL启动时会在内存中维护一个b…

LED点阵显示原理(取字模软件+Keil+Proteus)

前言 写这个的时候我还是有点生气的,因为发现完全按照书上面的步骤来,结果发现不理想,后面还是自己调试才解决了。-_-说多了都是泪,直接进入正文。 软件的操作还是参考我之前的博客。 LED数码管的静态显示与动态显示&#xff0…

LabelImg使用笔记

LabelImg使用笔记 文章目录 LabelImg使用笔记一、LabelImg简介1.1、特性1.2、LabelImg的热键 二、LabelImg安装三、3种格式的使用3.1、VOC格式标注3.2、yolo格式标注3.3、json格式 四、LabelMe 和 LabelImg适用场景 一、LabelImg简介 LabelImg 是一个用于图像标注的开源工具&a…

win11下使用VMmare设置CentOS7里面的静态IP

1,win11上的VMware 8 设置 2,选择VMmare上的虚拟网络编辑进行设置 #3,接下来进入虚拟机设置(就是进入CentOS7 打开终端 右键 Open Terminal ) # 切换root su root #ksana #编辑网络配置文件 vi /etc/sysconfig/networ…

【MongoDB】索引 - 单字段索引

MongoDB支持在集合文档中的任意字段上创建索引,默认情况下所有的集合都有一个_id字段的索引,用户和应用可以新增索引用于查询和操作。 一、准备工作 这里准备一些学生数据 db.students.insertMany([{ _id: 1, name: "张三", age: 20, clas…

马斯克发布大模型Grok;主流AI创意生成工具图谱;Runway视频大赛获奖作品解析;DALL-E 3图像混合操作;42章经播客推荐 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 👀 马斯克「xAI」发布首个AI大模型「Grok」 https://grok.x.ai 11月5日,马斯克旗下人工智能公司 xAI 发布了首款 AI 聊天产品…

Capto2024专为Mac电脑设计的屏幕录制和视频编辑软件

不得不说视频编辑功能:Capto提供了多种视频编辑功能,例如剪辑、旋转、裁剪、调整音频和视频的音量、加入水印、添加注释等,你能够使用Capto编辑你的视频,使之更加专业和生动。有目共睹的是录制完成后,你能够使用Capto提…

20.7 OpenSSL 套接字SSL加密传输

OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,…

web3 dapp React项目引入 antd 对 balance 用户token信息组件进行样式改造

好 上文 web3 React dapp中编写balance组件从redux取出并展示用户资产 我们简单处理了用户资产的展示 那么 我们继续 先启动 ganache 环境 终端输入 ganache -d然后 打开我们的项目 将合约发布到区块链上 truffle migrate --reset然后 我们启动项目 确认一切正常 还原到上文…

k8s中实现mysql主备

文章目录 一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.1 安装nfs1.2.2 部署nfs-provisioner 1.3 安装mysql1.4 备库上查看是否同步 一、k8s中实现mysql主备 1.1 环境信息 机器操作系统ipmysql版本k8s版本storageClassmaster1CentOS7.8192.168.0.20mysql5.…

C++ 代码实例:多项式除法简单计算工具

文章目录 前言代码仓库代码说明核心片段 结果总结参考资料作者的话 前言 C 代码实例:多项式除法简单计算工具。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (gitee.com) 代码 说明 由于代码篇幅较多&#…

【蓝桥杯省赛真题41】Scratch电脑开关机 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch电脑开关机 一、题目要求 编程实现 二、案例分析 1、角色分析

【数据开发】大数据平台架构,Hive / THive介绍

1、大数据引擎 大数据引擎是用于处理大规模数据的软件系统, 常用的大数据引擎包括Hadoop、Spark、Hive、Pig、Flink、Storm等。 其中,Hive是一种基于Hadoop的数据仓库工具,可以将结构化的数据映射到Hadoop的分布式文件系统上,并提…

家用电脑做服务器,本地服务器搭建,公网IP申请,路由器改桥接模式,拨号上网

先浇一盆冷水! 我不知道其他运营商是什么情况。联通的运营商公网IP端口 80、8080、443 都会被屏蔽掉,想要开放必须企业备案(个人不行)才可以。也就是说,只能通过其他端口进行showtime了。 需要哪些东西? 申…

MySQL中的刷脏机制详解

名词解释 脏页:当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。 干净页:内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。 LSN:称为日志的逻辑序列号(l…

HTB——introduction to active directory

文章目录 一、Active directory structure二、Active Directory Terminology 一、Active directory structure Active Directory (AD) 是用于 Windows 网络环境的目录服务。它是一种分布式分层结构,允许集中管理组织的资源,包括用…

MIPI-CSI-2 RAW10笔记

好文: 【精选】摄像头的MIPI接口、DVP接口和CSI接口-CSDN博客【精选】摄像头的MIPI接口、DVP接口和CSI接口-CSDN博客 (56 封私信 / 24 条消息) 显示器的 VGA、HDMI、DVI 和 DisplayPort 接口有什么区别? - 知乎 (zhihu.com) 嵌入式工程师必备&#x…